Commit b453856864d44879befd7558b68b0239b4be7870

Authored by YunaiV
1 parent f8d1fa9b

【代码优化】AI:向量化的集成

yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/knowledge/DocService.java
@@ -7,7 +7,6 @@ package cn.iocoder.yudao.module.ai.service.knowledge; @@ -7,7 +7,6 @@ package cn.iocoder.yudao.module.ai.service.knowledge;
7 */ 7 */
8 public interface DocService { 8 public interface DocService {
9 9
10 -  
11 /** 10 /**
12 * 向量化文档 11 * 向量化文档
13 */ 12 */
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
@@ -153,7 +153,7 @@ spring: @@ -153,7 +153,7 @@ spring:
153 153
154 spring: 154 spring:
155 ai: 155 ai:
156 - vectorstore: 156 + vectorstore: # 向量存储
157 redis: 157 redis:
158 index: default-index 158 index: default-index
159 prefix: "default:" 159 prefix: "default:"