Commit b453856864d44879befd7558b68b0239b4be7870
1 parent
f8d1fa9b
【代码优化】AI:向量化的集成
Showing
5 changed files
with
10 additions
and
10 deletions
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/knowledge/DocService.java
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/knowledge/DocServiceImpl.java
| @@ -21,24 +21,23 @@ import java.util.List; | @@ -21,24 +21,23 @@ import java.util.List; | ||
| 21 | public class DocServiceImpl implements DocService { | 21 | public class DocServiceImpl implements DocService { |
| 22 | 22 | ||
| 23 | @Resource | 23 | @Resource |
| 24 | - RedisVectorStore vectorStore; | 24 | + private RedisVectorStore vectorStore; |
| 25 | @Resource | 25 | @Resource |
| 26 | - TokenTextSplitter tokenTextSplitter; | 26 | + private TokenTextSplitter tokenTextSplitter; |
| 27 | 27 | ||
| 28 | // TODO @xin 临时测试用,后续删 | 28 | // TODO @xin 临时测试用,后续删 |
| 29 | @Value("classpath:/webapp/test/Fel.pdf") | 29 | @Value("classpath:/webapp/test/Fel.pdf") |
| 30 | private org.springframework.core.io.Resource data; | 30 | private org.springframework.core.io.Resource data; |
| 31 | 31 | ||
| 32 | - | ||
| 33 | @Override | 32 | @Override |
| 34 | public void embeddingDoc() { | 33 | public void embeddingDoc() { |
| 35 | // 读取文件 | 34 | // 读取文件 |
| 36 | - org.springframework.core.io.Resource file = data; | ||
| 37 | - TikaDocumentReader loader = new TikaDocumentReader(file); | 35 | + TikaDocumentReader loader = new TikaDocumentReader(data); |
| 38 | List<Document> documents = loader.get(); | 36 | List<Document> documents = loader.get(); |
| 39 | // 文档分段 | 37 | // 文档分段 |
| 40 | List<Document> segments = tokenTextSplitter.apply(documents); | 38 | List<Document> segments = tokenTextSplitter.apply(documents); |
| 41 | // 向量化并存储 | 39 | // 向量化并存储 |
| 42 | vectorStore.add(segments); | 40 | vectorStore.add(segments); |
| 43 | } | 41 | } |
| 42 | + | ||
| 44 | } | 43 | } |
yudao-module-ai/yudao-spring-boot-starter-ai/pom.xml
| @@ -40,6 +40,7 @@ | @@ -40,6 +40,7 @@ | ||
| 40 | <version>${spring-ai.version}</version> | 40 | <version>${spring-ai.version}</version> |
| 41 | </dependency> | 41 | </dependency> |
| 42 | 42 | ||
| 43 | + <!-- 向量化,基于 Redis 存储,Tika 解析内容 --> | ||
| 43 | <dependency> | 44 | <dependency> |
| 44 | <groupId>org.springframework.ai</groupId> | 45 | <groupId>org.springframework.ai</groupId> |
| 45 | <artifactId>spring-ai-transformers-spring-boot-starter</artifactId> | 46 | <artifactId>spring-ai-transformers-spring-boot-starter</artifactId> |
| @@ -55,13 +56,14 @@ | @@ -55,13 +56,14 @@ | ||
| 55 | <artifactId>spring-ai-redis-store</artifactId> | 56 | <artifactId>spring-ai-redis-store</artifactId> |
| 56 | <version>${spring-ai.version}</version> | 57 | <version>${spring-ai.version}</version> |
| 57 | </dependency> | 58 | </dependency> |
| 59 | + | ||
| 60 | + <!-- TODO @xin:引入我们项目的 starter --> | ||
| 58 | <dependency> | 61 | <dependency> |
| 59 | <groupId>org.springframework.data</groupId> | 62 | <groupId>org.springframework.data</groupId> |
| 60 | <artifactId>spring-data-redis</artifactId> | 63 | <artifactId>spring-data-redis</artifactId> |
| 61 | <optional>true</optional> | 64 | <optional>true</optional> |
| 62 | </dependency> | 65 | </dependency> |
| 63 | 66 | ||
| 64 | - | ||
| 65 | <dependency> | 67 | <dependency> |
| 66 | <groupId>cn.iocoder.boot</groupId> | 68 | <groupId>cn.iocoder.boot</groupId> |
| 67 | <artifactId>yudao-common</artifactId> | 69 | <artifactId>yudao-common</artifactId> |
yudao-module-ai/yudao-spring-boot-starter-ai/src/main/java/org/springframework/ai/autoconfigure/vectorstore/redis/RedisVectorStoreAutoConfiguration.java
| @@ -30,6 +30,8 @@ import redis.clients.jedis.JedisPooled; | @@ -30,6 +30,8 @@ import redis.clients.jedis.JedisPooled; | ||
| 30 | /** | 30 | /** |
| 31 | * TODO @xin 先拿 spring-ai 最新代码覆盖,1.0.0-M1 跟 redis 自动配置会冲突 | 31 | * TODO @xin 先拿 spring-ai 最新代码覆盖,1.0.0-M1 跟 redis 自动配置会冲突 |
| 32 | * | 32 | * |
| 33 | + * TODO 这个官方,有说啥时候 fix 哇? | ||
| 34 | + * | ||
| 33 | * @author Christian Tzolov | 35 | * @author Christian Tzolov |
| 34 | * @author Eddú Meléndez | 36 | * @author Eddú Meléndez |
| 35 | */ | 37 | */ |
| @@ -39,8 +41,6 @@ import redis.clients.jedis.JedisPooled; | @@ -39,8 +41,6 @@ import redis.clients.jedis.JedisPooled; | ||
| 39 | @EnableConfigurationProperties(RedisVectorStoreProperties.class) | 41 | @EnableConfigurationProperties(RedisVectorStoreProperties.class) |
| 40 | public class RedisVectorStoreAutoConfiguration { | 42 | public class RedisVectorStoreAutoConfiguration { |
| 41 | 43 | ||
| 42 | - | ||
| 43 | - | ||
| 44 | @Bean | 44 | @Bean |
| 45 | @ConditionalOnMissingBean | 45 | @ConditionalOnMissingBean |
| 46 | public RedisVectorStore vectorStore(EmbeddingModel embeddingModel, RedisVectorStoreProperties properties, | 46 | public RedisVectorStore vectorStore(EmbeddingModel embeddingModel, RedisVectorStoreProperties properties, |
yudao-server/src/main/resources/application.yaml