Retriever - volc VikingDB
Basic Introduction
The Volcano Engine VikingDB Retriever is an implementation of the Retriever interface. The Volcano Engine VikingDB is a vector database service provided by Volcano Engine, offering high-performance vector retrieval capabilities. This component interacts with the service through the Volcano Engine VikingDB Go SDK. The component implements the Eino: Retriever guide
Usage
Component Initialization
The Volcengine VikingDB Retriever is initialized using the NewRetriever
function, with the main configuration parameters as follows:
import "github.com/cloudwego/eino-ext/components/retriever/volc_vikingdb"
retriever, err := volc_vikingdb.NewRetriever(ctx, &volc_vikingdb.RetrieverConfig{
// Service Configuration
Host: "api-vikingdb.volces.com", // Service address
Region: "cn-beijing", // Region
AK: "your-ak", // Access key ID
SK: "your-sk", // Access key secret
Scheme: "https", // Protocol
ConnectionTimeout: 30, // Connection timeout (seconds)
// Data Configuration
Collection: "collection-name", // Collection name
Index: "index-name", // Index name
// Embedding Configuration
EmbeddingConfig: volc_vikingdb.EmbeddingConfig{
UseBuiltin: true, // Use built-in embedding
ModelName: "model-name",// Model name
UseSparse: true, // Use sparse vectors
DenseWeight: 0.5, // Dense vector weight
Embedding: embedder, // Custom embedder
},
// Retrieval Configuration
Partition: "partition", // Partition name
TopK: ptrOf(100), // Number of results to return
ScoreThreshold: ptrOf(0.7), // Similarity threshold
// Filter Configuration
FilterDSL: map[string]any{ // DSL filter conditions
"term": map[string]any{
"field": "value",
},
},
})
Retrieve Documents
Document retrieval is implemented via the Retrieve
method:
docs, err := retriever.Retrieve(ctx, "query text", retriever.WithTopK(5))
Complete Usage Example
Basic Retrieval
package main
import (
"context"
"github.com/cloudwego/eino-ext/components/retriever/volc_vikingdb"
)
func main() {
ctx := context.Background()
// Initialize the retriever
r, err := volc_vikingdb.NewRetriever(ctx, &volc_vikingdb.RetrieverConfig{
Host: "api-vikingdb.volces.com",
Region: "cn-beijing",
AK: "your-ak",
SK: "your-sk",
Collection: "your-collection",
Index: "your-index",
EmbeddingConfig: volc_vikingdb.EmbeddingConfig{
UseBuiltin: true,
ModelName: "model-name",
UseSparse: true,
DenseWeight: 0.5,
},
TopK: ptrOf(5),
})
if err != nil {
panic(err)
}
// Execute retrieval
docs, err := r.Retrieve(ctx, "How to use VikingDB?")
if err != nil {
panic(err)
}
// Process results
for _, doc := range docs {
println("Document ID:", doc.ID)
println("Content:", doc.Content)
println("Similarity:", doc.MetaData["_score"])
}
}
Custom Embedding
package main
import (
"context"
"github.com/cloudwego/eino-ext/components/retriever/volc_vikingdb"
"github.com/cloudwego/eino/components/embedding"
)
func main() {
ctx := context.Background()
// Initialize embedder (using openai as an example)
embedder, err := &openai.NewEmbedder(ctx, &openai.EmbeddingConfig{})
if err != nil {
panic(err)
}
// Initialize the retriever
r, err := volc_vikingdb.NewRetriever(ctx, &volc_vikingdb.RetrieverConfig{
Host: "api-vikingdb.volces.com",
Region: "cn-beijing",
AK: "your-ak",
SK: "your-sk",
Collection: "your-collection",
Index: "your-index",
EmbeddingConfig: volc_vikingdb.EmbeddingConfig{
UseBuiltin: false,
Embedding: embedder,
},
})
if err != nil {
panic(err)
}
// Execute retrieval
docs, err := r.Retrieve(ctx, "query text")
if err != nil {
panic(err)
}
// Process results
for _, doc := range docs {
println(doc.Content)
}
}
Related Documents
Last modified
February 21, 2025
: doc: add eino english docs (#1255) (4f6a3bd)