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