Spring AI 中的 Chroma 向量数据库集成了 Chroma 的向量数据库功能,提供向量存储和搜索能力。
Chroma 向量数据库支持:
本地和分布式向量存储
快速相似性搜索
元数据过滤
轻松集成
基本设置
< dependency >
< groupId > org.springframework.ai </ groupId >
< artifactId > spring-ai-chroma-vectordb </ artifactId >
< version > ${spring-ai.version} </ version >
</ dependency >
# Chroma 向量数据库配置
spring.ai.chroma.vectordb.enabled =true
spring.ai.chroma.vectordb.host =localhost
spring.ai.chroma.vectordb.port =8000
spring.ai.chroma.vectordb.collection-name =vectors
@ Service
public class ChromaVectorService {
private final ChromaVectorClient vectorClient ;
public ChromaVectorService ( ChromaVectorClient vectorClient ) {
this . vectorClient = vectorClient;
}
public void storeVector ( String id , float [] vector , Map < String , Object > metadata ) {
vectorClient . store (id, vector, metadata);
}
public List < SearchResult > searchSimilar ( float [] queryVector , int k ) {
return vectorClient . search (queryVector, k);
}
}
向量操作
1. 向量存储
@ Configuration
public class ChromaVectorStorageConfig {
@ Bean
public VectorStorage chromaVectorStorage ( ChromaVectorProperties properties ) {
return new ChromaVectorStorage (properties);
}
}
2. 相似性搜索
@ Configuration
public class ChromaSimilaritySearchConfig {
@ Bean
public SimilaritySearch chromaSimilaritySearch ( ChromaVectorProperties properties ) {
return new ChromaSimilaritySearch (properties);
}
}
3. 元数据过滤
@ Service
public class MetadataFilterService {
private final ChromaVectorClient vectorClient ;
public List < SearchResult > searchWithFilter ( float [] queryVector , Map < String , Object > filter , int k ) {
return vectorClient . searchWithFilter (queryVector, filter, k);
}
}
高级特性
自定义集合配置
@ Configuration
public class CollectionConfig {
@ Bean
public CollectionConfig collectionConfig () {
return CollectionConfig . builder ()
. name ( "custom-collection" )
. dimension ( 1536 )
. metric ( MetricType . COSINE )
. build ();
}
}
持久化配置
@ Configuration
public class PersistenceConfig {
@ Bean
public PersistenceConfig persistenceConfig () {
return PersistenceConfig . builder ()
. directory ( "/path/to/persist" )
. build ();
}
}
management.endpoints.web.exposure.include =chroma-vectordb
management.endpoint.chroma-vectordb.enabled =true
最佳实践
使用 Chroma 向量数据库时,请考虑以下最佳实践:
集合管理 :有效组织集合
元数据使用 :利用元数据进行过滤
持久化 :配置适当的持久化
性能 :优化搜索参数
监控 :设置适当的监控
故障排除
常见问题及解决方案:
连接问题
性能问题
存储问题
文档有误?请协助编辑 发现文档问题?点击此处直接在 GitHub 上编辑并提交 PR,帮助我们改进文档!