Retriever - volc vikingdb
Overview
Volcengine VikingDB retriever is an implementation of the Retriever interface. VikingDB is a high‑performance vector database service that provides vector retrieval capabilities. This component interacts with the service via the Volcengine VikingDB Go SDK. It follows Eino: Retriever Guide.
Usage
Initialization
Initialize the VikingDB retriever via NewRetriever with key configuration options:
import "github.com/cloudwego/eino-ext/components/retriever/volc_vikingdb"
retriever, err := volc_vikingdb.NewRetriever(ctx, &volc_vikingdb.RetrieverConfig{
// service config
Host: "api-vikingdb.volces.com", // service host
Region: "cn-beijing", // region
AK: "your-ak", // Access Key
SK: "your-sk", // Secret Key
Scheme: "https", // protocol
ConnectionTimeout: 30, // connection timeout (seconds)
// data config
Collection: "collection-name", // collection name
Index: "index-name", // index name
// embedding config
EmbeddingConfig: volc_vikingdb.EmbeddingConfig{
UseBuiltin: true, // use built-in embedding
ModelName: "model-name", // model name
UseSparse: true, // use sparse vector
DenseWeight: 0.5, // dense vector weight
Embedding: embedder, // custom embedder
},
// retrieval config
Partition: "partition", // partition name
TopK: ptrOf(100), // number of results
ScoreThreshold: ptrOf(0.7), // similarity threshold
// filter config
FilterDSL: map[string]any{ // DSL filter conditions
"term": map[string]any{ "field": "value" },
},
})
Retrieve Documents
Retrieve documents via Retrieve:
docs, err := retriever.Retrieve(ctx, "query text", retriever.WithTopK(5))
Complete Examples
Basic Retrieval
package main
import (
"context"
"github.com/cloudwego/eino-ext/components/retriever/volc_vikingdb"
)
func main() {
ctx := context.Background()
// init 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) }
// retrieve
docs, err := r.Retrieve(ctx, "How to use VikingDB?")
if err != nil { panic(err) }
// handle results
for _, doc := range docs {
println("docID:", doc.ID)
println("content:", doc.Content)
println("score:", 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()
// init embedder (openai example)
embedder, err := &openai.NewEmbedder(ctx, &openai.EmbeddingConfig{})
if err != nil { panic(err) }
// init 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) }
// retrieve
docs, err := r.Retrieve(ctx, "query text")
if err != nil { panic(err) }
for _, doc := range docs { println(doc.Content) }
}
References
Last modified
December 11, 2025
: feat(eino): sync zh documents (#1474) (958594401a)