跳转至

TcVector(腾讯云向量数据库)

示例代码: examples/knowledge/vectorstores/tcvector

TcVector 是腾讯云向量数据库的实现,支持本地和远程两种 embedding 模式。

Embedding 模式

TcVector 支持两种 embedding 模式:

1. 本地 Embedding 模式(默认)

使用本地 embedder 计算向量,然后存储到 TcVector:

import (
    "trpc.group/trpc-go/trpc-agent-go/knowledge"
    vectortcvector "trpc.group/trpc-go/trpc-agent-go/knowledge/vectorstore/tcvector"
)

// 本地 embedding 模式
tcVS, err := vectortcvector.New(
    vectortcvector.WithURL("https://your-tcvector-endpoint"),
    vectortcvector.WithUsername("your-username"),
    vectortcvector.WithPassword("your-password"),
    vectortcvector.WithFilterAll(true), // 推荐开启:自动索引所有元数据字段
)
if err != nil {
    // 处理 error
}

kb := knowledge.New(
    knowledge.WithVectorStore(tcVS),
    knowledge.WithEmbedder(embedder), // 需要配置本地 embedder
)

2. 远程 Embedding 模式

使用 TcVector 云端 embedding 计算,无需本地 embedder,节省资源:

import (
    "trpc.group/trpc-go/trpc-agent-go/knowledge"
    vectortcvector "trpc.group/trpc-go/trpc-agent-go/knowledge/vectorstore/tcvector"
)

// 远程 embedding 模式
tcVS, err := vectortcvector.New(
    vectortcvector.WithURL("https://your-tcvector-endpoint"),
    vectortcvector.WithUsername("your-username"),
    vectortcvector.WithPassword("your-password"),
    vectortcvector.WithFilterAll(true), // 推荐开启:自动索引所有元数据字段
    // 启用远程 embedding 计算
    vectortcvector.WithRemoteEmbeddingModel("bge-base-zh"),
    // 如需混合检索,需启用 TSVector
    vectortcvector.WithEnableTSVector(true),
)
if err != nil {
    // 处理 error
}

kb := knowledge.New(
    knowledge.WithVectorStore(tcVS),
    // 注意:使用远程 embedding 时,不需要配置 embedder
    // knowledge.WithEmbedder(embedder), // 不需要
)

配置选项

连接配置

选项 说明 默认值
WithURL(url) TcVector 服务端点 -
WithUsername(username) 用户名 -
WithPassword(password) 密码 -
WithDatabase(database) 数据库名称 "trpc-agent-go"
WithCollection(collection) 集合名称 "documents"
WithTCVectorInstance(name) 使用已注册的 TcVector 实例(优先级低于直接连接配置) -

向量配置

选项 说明 默认值
WithIndexDimension(dim) 向量维度(需与 embedding 模型匹配) 1536
WithRemoteEmbeddingModel(model) 远程 embedding 模型名称(如 bge-base-zh) -
WithEnableTSVector(enabled) 启用混合检索 true
WithHybridSearchWeights(vector, text) 混合检索权重(向量/文本) 0.7, 0.3
WithLanguage(lang) 文本分词语言(zh/en) "en"

索引配置

选项 说明 默认值
WithReplicas(n) 副本数量 0
WithSharding(n) 分片数量 1
WithFilterIndexFields(fields) 为指定字段构建过滤索引 -
WithFilterAll(enabled) 启用全字段过滤(跳过索引创建) false

搜索配置

选项 说明 默认值
WithMaxResults(n) 默认搜索结果数量 10
WithDocBuilder(builder) 自定义文档构建方法 默认构建器

字段映射(高级)

选项 说明 默认值
WithIDField(field) ID 字段名 "id"
WithNameField(field) 名称字段名 "name"
WithContentField(field) 内容字段名 "content"
WithEmbeddingField(field) 向量字段名 "vector"
WithMetadataField(field) 元数据字段名 "metadata"
WithCreatedAtField(field) 创建时间字段名 "created_at"
WithUpdatedAtField(field) 更新时间字段名 "updated_at"
WithSparseVectorField(field) 稀疏向量字段名 "sparse_vector"

过滤器支持

TcVector 对过滤器的支持:

  • ✅ 支持所有元数据过滤
  • ✅ v0.4.0+ 新建集合自动支持 JSON 索引(需 TCVector 服务支持)
  • ⚡ 可选:使用 WithFilterIndexFields 为高频字段构建额外索引
// 推荐配置(适用于大多数场景)
vectorStore, err := vectortcvector.New(
    vectortcvector.WithURL("https://your-endpoint"),
    vectortcvector.WithFilterAll(true), // 推荐开启:自动索引所有元数据字段,无需手动管理索引
    // ... 其他配置
)

// 可选:为高频字段构建额外索引以优化性能(配合 WithFilterAll(true) 使用)
metadataKeys := source.GetAllMetadataKeys(sources)
vectorStore, err := vectortcvector.New(
    vectortcvector.WithURL("https://your-endpoint"),
    vectortcvector.WithFilterAll(true),
    vectortcvector.WithFilterIndexFields(metadataKeys), // 可选:构建额外倒排索引加速查询
    // ... 其他配置
)

说明: - WithFilterAll(true)(推荐):自动为 metadata 字段创建 JSON 索引,使所有元数据字段均可被过滤查询,无需预先定义 schema。 - WithFilterIndexFields(可选):为特定的高频查询字段创建额外的倒排索引,在大数据量下进一步提升过滤性能。