Skip to content

适配器

知识引擎使用可插拔的适配器系统以实现可扩展性。

数据库适配器

PostgreSQL(默认)

使用 pgvector 扩展的主数据库适配器。

功能:

  • 向量相似度搜索(pgvector)
  • BM25 全文搜索
  • 中文文本支持(zhparser)
  • 连接池

配置:

go
DatabaseURL: "postgres://user:pass@host:5432/dbname?sslmode=disable"

嵌入适配器

OpenAI

go
Embedding: knowledge.EmbeddingConfig{
    Provider: "openai",
    APIKey:   "sk-...",
    Model:    "text-embedding-3-small",
}

Gemini

go
Embedding: knowledge.EmbeddingConfig{
    Provider: "gemini",
    APIKey:   "your-gemini-key",
    Model:    "text-embedding-004",
}

Ollama(兼容 OpenAI)

go
Embedding: knowledge.EmbeddingConfig{
    Provider:  "ollama",
    BaseURL:   "http://localhost:11434/v1",
    Model:     "nomic-embed-text",
}

存储适配器

本地文件系统

go
Storage: knowledge.StorageConfig{
    Type: "local",
    Path: "./uploads",
}

MinIO / S3

go
Storage: knowledge.StorageConfig{
    Type:      "minio",
    Bucket:    "knowledge",
    Endpoint:  "localhost:9000",
    AccessKey: "minioadmin",
    SecretKey: "minioadmin",
    UseSSL:    false,
}

认证适配器

JWT

go
Auth: knowledge.AuthConfig{
    Type:      "jwt",
    JWTSecret: "your-secret-key",
}

无认证(开发环境)

go
Auth: knowledge.AuthConfig{
    Type: "noop",
}

自定义适配器

实现相应接口以创建自定义适配器:

go
// 自定义嵌入提供商
type Embedder interface {
    Embed(ctx context.Context, texts []string) ([][]float32, error)
}

// 自定义存储后端
type Storage interface {
    Upload(ctx context.Context, path string, reader io.Reader) error
    Download(ctx context.Context, path string) (io.ReadCloser, error)
    Delete(ctx context.Context, path string) error
}

// 自定义认证提供商
type Authenticator interface {
    Authenticate(ctx context.Context, token string) (string, error)
}

在适配器注册表中注册自定义适配器:

go
knowledge.RegisterEmbedder("custom", func(cfg knowledge.EmbeddingConfig) (Embedder, error) {
    return NewCustomEmbedder(cfg), nil
})

Released under the MIT License.