| | |
| | | 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 io.pinecone.clients.Index; |
| | |
| | | @Value("${pinecone.namespace:knowledge-base}") |
| | | private String namespace; |
| | | |
| | | @Value("${pinecone.enabled:false}") |
| | | private boolean pineconeEnabled; |
| | | |
| | | @Bean |
| | | public Pinecone pinecone() { |
| | | return new Pinecone.Builder(pineconeApiKey).build(); |
| | |
| | | |
| | | @Bean |
| | | public EmbeddingStore<TextSegment> embeddingStore(EmbeddingModel embeddingModel) { |
| | | // 项目管理等核心业务不应因外部向量库不可用而无法启动。 |
| | | // 生产环境明确配置 pinecone.enabled=true 时仍使用原 Pinecone 存储。 |
| | | if (!pineconeEnabled) { |
| | | return new InMemoryEmbeddingStore<>(); |
| | | } |
| | | return PineconeEmbeddingStore.builder() |
| | | .apiKey(pineconeApiKey) |
| | | .index(indexName) |
| | |
| | | .build()) |
| | | .build(); |
| | | } |
| | | } |
| | | } |