Skip to content

Milvus

Example Code: examples/knowledge/vectorstores/milvus

Milvus is a high-performance vector database designed for billion-scale vector search scenarios.

Basic Configuration

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 {
    // Handle error
}

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

Configuration Options

Connection Configuration

Option Description Default
WithAddress(address) Milvus server address -
WithUsername(username) Username -
WithPassword(password) Password -
WithDBName(dbName) Database name -
WithAPIKey(apiKey) API Key authentication -
WithDialOptions(opts...) gRPC connection options Timeout=5s

Collection Configuration

Option Description Default
WithCollectionName(name) Collection name "trpc_agent_documents"
WithDimension(dim) Vector dimension 1536
WithMetricType(type) Similarity metric type (IP/L2/COSINE) entity.IP

Index Configuration

Option Description Default
WithHNSWParams(m, efConstruction) HNSW index parameters M=16, EfConstruction=128

Search Configuration

Option Description Default
WithMaxResults(max) Default number of search results 10
WithReranker(reranker) Set reranker -
WithDocBuilder(builder) Custom document builder method Default builder

Field Mapping (Advanced)

Option Description Default
WithIDField(field) ID field name "id"
WithNameField(field) Name field name "name"
WithContentField(field) Content field name "content"
WithVectorField(field) Vector field name "vector"
WithMetadataField(field) Metadata field name "metadata"
WithCreatedAtField(field) Created time field name "created_at"
WithUpdatedAtField(field) Updated time field name "updated_at"

Similarity Metric Types

Milvus supports multiple similarity metric types:

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

// Inner Product - default, higher scores mean more similar
vectormilvus.WithMetricType(entity.IP)

// Euclidean Distance (L2) - lower scores mean more similar
vectormilvus.WithMetricType(entity.L2)

// Cosine Similarity
vectormilvus.WithMetricType(entity.COSINE)

Usage Example

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),  // Higher recall
    vectormilvus.WithMaxResults(20),
)