跳转至

Milvus

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

Milvus 是一个高性能向量数据库,专为十亿级向量搜索场景设计。

基础配置

import (
    "trpc.group/trpc-go/trpc-agent-go/knowledge"
    vectormilvus "trpc.group/trpc-go/trpc-agent-go/knowledge/vectorstore/milvus"
)

milvusVS, err := vectormilvus.New(ctx,
    vectormilvus.WithAddress("localhost:19530"),
    vectormilvus.WithCollectionName("my_documents"),
    vectormilvus.WithDimension(1536),
)
if err != nil {
    // 处理 error
}

kb := knowledge.New(
    knowledge.WithVectorStore(milvusVS),
    knowledge.WithEmbedder(embedder),
)

配置选项

连接配置

选项 说明 默认值
WithAddress(address) Milvus 服务器地址 -
WithUsername(username) 用户名 -
WithPassword(password) 密码 -
WithDBName(dbName) 数据库名称 -
WithAPIKey(apiKey) API Key 认证 -
WithDialOptions(opts...) gRPC 连接选项 Timeout=5s

集合配置

选项 说明 默认值
WithCollectionName(name) 集合名称 "trpc_agent_documents"
WithDimension(dim) 向量维度 1536
WithMetricType(type) 相似度度量类型(IP/L2/COSINE) entity.IP

索引配置

选项 说明 默认值
WithHNSWParams(m, efConstruction) HNSW 索引参数 M=16, EfConstruction=128

搜索配置

选项 说明 默认值
WithMaxResults(max) 默认搜索结果数量 10
WithReranker(reranker) 设置重排器 -
WithDocBuilder(builder) 自定义文档构建方法 默认构建器

字段映射(高级)

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

相似度度量类型

Milvus 支持多种相似度度量类型:

import "github.com/milvus-io/milvus/client/v2/entity"

// 内积(Inner Product)- 默认,分数越高越相似
vectormilvus.WithMetricType(entity.IP)

// 欧氏距离(L2)- 分数越低越相似
vectormilvus.WithMetricType(entity.L2)

// 余弦相似度
vectormilvus.WithMetricType(entity.COSINE)

使用示例

import (
    vectormilvus "trpc.group/trpc-go/trpc-agent-go/knowledge/vectorstore/milvus"
    "github.com/milvus-io/milvus/client/v2/entity"
)

milvusVS, err := vectormilvus.New(ctx,
    vectormilvus.WithAddress("localhost:19530"),
    vectormilvus.WithUsername("root"),
    vectormilvus.WithPassword("Milvus"),
    vectormilvus.WithCollectionName("knowledge_base"),
    vectormilvus.WithDimension(1536),
    vectormilvus.WithMetricType(entity.COSINE),
    vectormilvus.WithHNSWParams(32, 256),  // 更高的召回率
    vectormilvus.WithMaxResults(20),
)