package com.ruoyi.ai.config; import dev.langchain4j.data.segment.TextSegment; import dev.langchain4j.model.embedding.EmbeddingModel; import dev.langchain4j.store.embedding.EmbeddingStore; import dev.langchain4j.store.embedding.pinecone.PineconeEmbeddingStore; import dev.langchain4j.store.embedding.pinecone.PineconeServerlessIndexConfig; 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; /** * 向量存储配置 */ @Configuration public class EmbeddingStoreConfig { @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; @Bean public Pinecone pinecone() { return new Pinecone.Builder(pineconeApiKey).build(); } @Bean public Index pineconeIndex(Pinecone pinecone) { return pinecone.getIndexConnection(indexName); } @Bean public EmbeddingStore embeddingStore(EmbeddingModel embeddingModel) { return PineconeEmbeddingStore.builder() .apiKey(pineconeApiKey) .index(indexName) .nameSpace(namespace) .createIndex(PineconeServerlessIndexConfig.builder() .cloud("AWS") .region("us-east-1") .dimension(embeddingModel.dimension()) .build()) .build(); } }