From f76bf27bf93e523ae4572d9e10e9ca541c324185 Mon Sep 17 00:00:00 2001
From: zhangwencui <1064582902@qq.com>
Date: 星期二, 03 十一月 2026 17:18:55 +0800
Subject: [PATCH] 部分改动

---
 src/main/java/com/ruoyi/ai/config/EmbeddingStoreConfig.java |   51 ++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 38 insertions(+), 13 deletions(-)

diff --git a/src/main/java/com/ruoyi/ai/config/EmbeddingStoreConfig.java b/src/main/java/com/ruoyi/ai/config/EmbeddingStoreConfig.java
index ca5156d..18c0b53 100644
--- a/src/main/java/com/ruoyi/ai/config/EmbeddingStoreConfig.java
+++ b/src/main/java/com/ruoyi/ai/config/EmbeddingStoreConfig.java
@@ -3,33 +3,58 @@
 import dev.langchain4j.data.segment.TextSegment;
 import dev.langchain4j.model.embedding.EmbeddingModel;
 import dev.langchain4j.store.embedding.EmbeddingStore;
+import dev.langchain4j.store.embedding.inmemory.InMemoryEmbeddingStore;
 import dev.langchain4j.store.embedding.pinecone.PineconeEmbeddingStore;
 import dev.langchain4j.store.embedding.pinecone.PineconeServerlessIndexConfig;
-import org.springframework.beans.factory.annotation.Autowired;
+import io.pinecone.clients.Index;
+import io.pinecone.clients.Pinecone;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
 /**
- * @author :yys
- * @date : 2025/5/2 21:07
+ * 鍚戦噺瀛樺偍閰嶇疆
  */
 @Configuration
 public class EmbeddingStoreConfig {
 
-    @Autowired
-    private EmbeddingModel embeddingModel;
+    @Value("${pinecone.api-key:pcsk_4SJLnh_tNB3wSLJU8tc4E5P28PcXX8eCLdURqZpVhg1FMV8CRYxjneWdzqRdB5Ftqooi9}")
+    private String pineconeApiKey;
+
+    @Value("${pinecone.index:xiaozhi-index}")
+    private String indexName;
+
+    @Value("${pinecone.namespace:knowledge-base}")
+    private String namespace;
+
+    @Value("${pinecone.enabled:false}")
+    private boolean pineconeEnabled;
 
     @Bean
-    public EmbeddingStore<TextSegment> embeddingStore() {
-        //鍒涘缓鍚戦噺瀛樺偍
+    public Pinecone pinecone() {
+        return new Pinecone.Builder(pineconeApiKey).build();
+    }
+
+    @Bean
+    public Index pineconeIndex(Pinecone pinecone) {
+        return pinecone.getIndexConnection(indexName);
+    }
+
+    @Bean
+    public EmbeddingStore<TextSegment> embeddingStore(EmbeddingModel embeddingModel) {
+        // 椤圭洰绠$悊绛夋牳蹇冧笟鍔′笉搴斿洜澶栭儴鍚戦噺搴撲笉鍙敤鑰屾棤娉曞惎鍔ㄣ��
+        // 鐢熶骇鐜鏄庣‘閰嶇疆 pinecone.enabled=true 鏃朵粛浣跨敤鍘� Pinecone 瀛樺偍銆�
+        if (!pineconeEnabled) {
+            return new InMemoryEmbeddingStore<>();
+        }
         return PineconeEmbeddingStore.builder()
-                .apiKey("pcsk_4SJLnh_tNB3wSLJU8tc4E5P28PcXX8eCLdURqZpVhg1FMV8CRYxjneWdzqRdB5Ftqooi9")
-                .index("xiaozhi-index")//濡傛灉鎸囧畾鐨勭储寮曚笉瀛樺湪锛屽皢鍒涘缓涓�涓柊鐨勭储寮�
-                .nameSpace("xiaozhi-namespace") //濡傛灉鎸囧畾鐨勫悕绉扮┖闂翠笉瀛樺湪锛屽皢鍒涘缓涓�涓柊鐨勫悕绉� 绌洪棿
+                .apiKey(pineconeApiKey)
+                .index(indexName)
+                .nameSpace(namespace)
                 .createIndex(PineconeServerlessIndexConfig.builder()
-                        .cloud("AWS") //鎸囧畾绱㈠紩閮ㄧ讲鍦� AWS 浜戞湇鍔′笂銆�
-                        .region("us-east-1") //鎸囧畾绱㈠紩鎵�鍦ㄧ殑 AWS 鍖哄煙涓� us-east-1銆�
-                        .dimension(embeddingModel.dimension()) //鎸囧畾绱㈠紩鐨勫悜閲忕淮搴︼紝璇ョ淮搴︿笌 embeddedModel 鐢熸垚鐨勫悜閲忕淮搴︾浉鍚屻��
+                        .cloud("AWS")
+                        .region("us-east-1")
+                        .dimension(embeddingModel.dimension())
                         .build())
                 .build();
     }

--
Gitblit v1.9.3