> ## Documentation Index
> Fetch the complete documentation index at: https://javaai.pig4cloud.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Chroma 向量数据库

Spring AI 中的 Chroma 向量数据库集成了 Chroma 的向量数据库功能，提供向量存储和搜索能力。

## 概述

Chroma 向量数据库支持：

* 本地和分布式向量存储
* 快速相似性搜索
* 元数据过滤
* 轻松集成

## 特性

<CardGroup cols={2}>
  <Card title="向量存储" icon="database">
    高效的向量存储
  </Card>

  <Card title="相似性搜索" icon="magnifying-glass">
    快速相似性搜索
  </Card>

  <Card title="元数据" icon="tags">
    丰富的元数据支持
  </Card>

  <Card title="灵活性" icon="sliders">
    多种部署选项
  </Card>
</CardGroup>

## 实现

### 基本设置

```xml theme={"system"}
<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-chroma-vectordb</artifactId>
    <version>${spring-ai.version}</version>
</dependency>
```

### 配置

```properties theme={"system"}
# 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
```

### 用法

```java theme={"system"}
@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. 向量存储

```java theme={"system"}
@Configuration
public class ChromaVectorStorageConfig {
    @Bean
    public VectorStorage chromaVectorStorage(ChromaVectorProperties properties) {
        return new ChromaVectorStorage(properties);
    }
}
```

### 2. 相似性搜索

```java theme={"system"}
@Configuration
public class ChromaSimilaritySearchConfig {
    @Bean
    public SimilaritySearch chromaSimilaritySearch(ChromaVectorProperties properties) {
        return new ChromaSimilaritySearch(properties);
    }
}
```

### 3. 元数据过滤

```java theme={"system"}
@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);
    }
}
```

## 高级特性

### 自定义集合配置

```java theme={"system"}
@Configuration
public class CollectionConfig {
    @Bean
    public CollectionConfig collectionConfig() {
        return CollectionConfig.builder()
            .name("custom-collection")
            .dimension(1536)
            .metric(MetricType.COSINE)
            .build();
    }
}
```

### 持久化配置

```java theme={"system"}
@Configuration
public class PersistenceConfig {
    @Bean
    public PersistenceConfig persistenceConfig() {
        return PersistenceConfig.builder()
            .directory("/path/to/persist")
            .build();
    }
}
```

### 监控

```properties theme={"system"}
management.endpoints.web.exposure.include=chroma-vectordb
management.endpoint.chroma-vectordb.enabled=true
```

## 最佳实践

<Note>
  使用 Chroma 向量数据库时，请考虑以下最佳实践：
</Note>

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

## 故障排除

常见问题及解决方案：

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

2. **性能问题**
   * 优化集合设置
   * 使用适当的度量标准
   * 实现缓存

3. **存储问题**
   * 监控磁盘使用情况
   * 配置持久化
   * 执行清理

<Card title="文档有误？请协助编辑" icon="pencil" href="https://github.com/javaai-pig4cloud-com/javaai-docs/edit/main/spring-ai/api/vectordbs/chroma.mdx">
  发现文档问题？点击此处直接在 GitHub 上编辑并提交 PR，帮助我们改进文档！
</Card>
