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 向量数据库时,请考虑以下最佳实践:

  • 集合管理:有效组织集合
  • 元数据使用:利用元数据进行过滤
  • 持久化:配置适当的持久化
  • 性能:优化搜索参数
  • 监控:设置适当的监控

故障排除

常见问题及解决方案:

  1. 连接问题

    • 验证主机和端口
    • 检查网络连接性
    • 查看服务器状态
  2. 性能问题

    • 优化集合设置
    • 使用适当的度量标准
    • 实现缓存
  3. 存储问题

    • 监控磁盘使用情况
    • 配置持久化
    • 执行清理

文档有误?请协助编辑

发现文档问题?点击此处直接在 GitHub 上编辑并提交 PR,帮助我们改进文档!