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

概述

Couchbase 向量数据库支持:

  • 分布式向量存储
  • 全文搜索集成
  • 实时向量操作
  • 多维扩展

特性

分布式存储

分布式向量存储

搜索集成

全文搜索

可扩展性

多维扩展

实时

实时操作

实现

基本设置

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-couchbase-vectordb</artifactId>
    <version>${spring-ai.version}</version>
</dependency>

配置

# Couchbase 向量数据库配置
spring.ai.couchbase.vectordb.enabled=true
spring.ai.couchbase.vectordb.connection-string=couchbase://localhost
spring.ai.couchbase.vectordb.bucket-name=vectordb
spring.ai.couchbase.vectordb.scope-name=vectors
spring.ai.couchbase.vectordb.collection-name=vectors

用法

@Service
public class CouchbaseVectorService {
    private final CouchbaseVectorClient vectorClient;

    public CouchbaseVectorService(CouchbaseVectorClient 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 CouchbaseVectorStorageConfig {
    @Bean
    public VectorStorage couchbaseVectorStorage(CouchbaseVectorProperties properties) {
        return new CouchbaseVectorStorage(properties);
    }
}

2. 相似性搜索

@Configuration
public class CouchbaseSimilaritySearchConfig {
    @Bean
    public SimilaritySearch couchbaseSimilaritySearch(CouchbaseVectorProperties properties) {
        return new CouchbaseSimilaritySearch(properties);
    }
}

3. 全文搜索集成

@Service
public class FullTextSearchService {
    private final CouchbaseVectorClient vectorClient;

    public List<SearchResult> searchWithText(String text, float[] queryVector, int k) {
        return vectorClient.searchWithText(text, queryVector, k);
    }
}

高级特性

自定义索引配置

@Configuration
public class IndexConfig {
    @Bean
    public IndexConfig indexConfig() {
        return IndexConfig.builder()
            .name("vector-index")
            .dimension(1536)
            .metric(MetricType.COSINE)
            .build();
    }
}

Bucket 配置

@Configuration
public class BucketConfig {
    @Bean
    public BucketConfig bucketConfig() {
        return BucketConfig.builder()
            .name("vectordb")
            .memoryQuota(1024)
            .build();
    }
}

监控

management.endpoints.web.exposure.include=couchbase-vectordb
management.endpoint.couchbase-vectordb.enabled=true

最佳实践

使用 Couchbase 向量数据库时,请考虑以下最佳实践:

  • 集群设计:设计高效的集群拓扑
  • 索引管理:优化索引配置
  • 内存管理:配置适当的内存配额
  • 复制:设置适当的复制
  • 监控:实施全面的监控

故障排除

常见问题及解决方案:

  1. 连接问题

    • 验证连接字符串
    • 检查集群状态
    • 查看身份验证
  2. 性能问题

    • 优化索引配置
    • 调整内存配额
    • 查看查询模式
  3. 存储问题

    • 监控存储桶使用情况
    • 配置清理
    • 查看保留策略

文档有误?请协助编辑

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