Indexer - volc vikingdb
Overview
Volcengine VikingDB vector indexer is an implementation of the Indexer interface. It stores document content into Volcengine’s VikingDB vector database. This component follows the guide Eino: Indexer Guide.
VikingDB Service Overview
VikingDB is a high‑performance vector database service that provides vector storage, retrieval, and embedding. This component interacts with the service via the Volcengine SDK and supports two embedding approaches:
- Use VikingDB’s built‑in embedding (Embedding V2)
- Use a custom embedding model
Usage
Initialization
Initialize the VikingDB indexer via NewIndexer with key configuration options:
import "github.com/cloudwego/eino-ext/components/indexer/volc_vikingdb"
indexer, err := volc_vikingdb.NewIndexer(ctx, &volc_vikingdb.IndexerConfig{
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)
Collection: "your-collection", // collection name
EmbeddingConfig: volc_vikingdb.EmbeddingConfig{
UseBuiltin: true, // use built-in embedding
ModelName: "text2vec-base", // model name
UseSparse: true, // use sparse vectors
Embedding: embedder, // custom embedder
},
AddBatchSize: 5, // batch add size
})
Complete Examples
Using Built‑in Embedding
package main
import (
"context"
volcvikingdb "github.com/cloudwego/eino-ext/components/indexer/volc_vikingdb"
"github.com/cloudwego/eino/schema"
)
func main() {
ctx := context.Background()
// init indexer
idx, err := volcvikingdb.NewIndexer(ctx, &volcvikingdb.IndexerConfig{
Host: "api-vikingdb.volces.com",
Region: "cn-beijing",
AK: "your-ak",
SK: "your-sk",
Scheme: "https",
Collection: "test-collection",
EmbeddingConfig: volcvikingdb.EmbeddingConfig{
UseBuiltin: true,
ModelName: "text2vec-base",
UseSparse: true,
},
})
if err != nil {
panic(err)
}
// documents
docs := []*schema.Document{
{ Content: "This is the first document content" },
{ Content: "This is the second document content" },
}
// store
ids, err := idx.Store(ctx, docs)
if err != nil {
panic(err)
}
for i, id := range ids {
println("doc", i+1, "stored ID:", id)
}
}
Using Custom Embedding
package main
import (
"context"
volcvikingdb "github.com/cloudwego/eino-ext/components/indexer/volc_vikingdb"
"github.com/cloudwego/eino/components/embedding"
"github.com/cloudwego/eino/schema"
)
func main() {
ctx := context.Background()
// init embedder (openai example)
embedder, err := &openai.NewEmbedder(ctx, &openai.EmbeddingConfig{})
if err != nil {
panic(err)
}
// init indexer
idx, err := volcvikingdb.NewIndexer(ctx, &volcvikingdb.IndexerConfig{
Host: "api-vikingdb.volces.com",
Region: "cn-beijing",
AK: "your-ak",
SK: "your-sk",
Scheme: "https",
Collection: "test-collection",
EmbeddingConfig: volcvikingdb.EmbeddingConfig{
UseBuiltin: false,
Embedding: embedder,
},
})
if err != nil {
panic(err)
}
docs := []*schema.Document{
{ Content: "Document content one" },
{ Content: "Document content two" },
}
ids, err := idx.Store(ctx, docs)
if err != nil {
panic(err)
}
for i, id := range ids {
println("doc", i+1, "stored ID:", id)
}
}
References
Last modified
December 11, 2025
: feat(eino): sync zh documents (#1474) (958594401a)