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<TextSegment> 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();
|
}
|
}
|