vector

package
v0.35.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 29, 2025 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Document

type Document struct {
	ID        string         // 全局唯一 ID
	Text      string         // 原文或 chunk 文本(可选)
	Embedding []float32      // 文本向量(可选)
	Metadata  map[string]any // 业务元数据,如 user_id, project_id 等
	Namespace string         // 逻辑命名空间,例如 "users/alice/projects/demo"
	OrgID     string         // 组织 ID(多租户支持)
	TenantID  string         // 租户 ID(多租户支持)
}

Document 表示一条向量索引文档。 不强制要求 Text/Embedding 同时存在,具体策略由上层控制。

type Embedder

type Embedder interface {
	EmbedText(ctx context.Context, texts []string) ([][]float32, error)
}

Embedder 为文本生成向量的抽象接口。 具体实现可以基于 OpenAI、Anthropic、本地模型或外部 HTTP 服务。

type Hit

type Hit struct {
	ID       string         // Document ID
	Score    float64        // 相似度分数,越大越相关
	Metadata map[string]any // 透传的元数据
}

Hit 表示一次检索命中的结果。

type MemoryStore

type MemoryStore struct {
	// contains filtered or unexported fields
}

MemoryStore 一个简单的内存向量存储实现, 仅用于示例和测试。 不适合生产环境, 但可以帮助用户快速理解接口用法。

func NewMemoryStore

func NewMemoryStore() *MemoryStore

NewMemoryStore 创建内存向量存储。

func (*MemoryStore) Close

func (s *MemoryStore) Close() error

Close 对内存存储无实际作用。

func (*MemoryStore) Delete

func (s *MemoryStore) Delete(_ context.Context, ids []string) error

Delete 从内存存储中删除文档。

func (*MemoryStore) Query

func (s *MemoryStore) Query(_ context.Context, q Query) ([]Hit, error)

Query 在指定命名空间内执行简单的余弦相似度检索。

func (*MemoryStore) Upsert

func (s *MemoryStore) Upsert(_ context.Context, docs []Document) error

Upsert 将文档插入或更新到内存存储。

type MockEmbedder

type MockEmbedder struct {
	Dim int
}

MockEmbedder 一个非常简化的 Embedder 实现, 仅用于示例/测试。 实际生产中应替换为真实的 embedding 服务(OpenAI/本地模型等)。

func NewMockEmbedder

func NewMockEmbedder(dim int) *MockEmbedder

NewMockEmbedder 创建一个 MockEmbedder。 Dim 指定向量维度, 默认为 16。

func (*MockEmbedder) EmbedText

func (e *MockEmbedder) EmbedText(_ context.Context, texts []string) ([][]float32, error)

EmbedText 将文本映射为简单的伪随机向量(基于字节值), 只保证同一文本得到相同向量, 不保证语义质量。

type OpenAIEmbedder

type OpenAIEmbedder struct {
	BaseURL string
	APIKey  string
	Model   string
	Client  *http.Client
}

OpenAIEmbedder 基于 OpenAI 兼容接口的 Embedder 实现。 默认调用 POST {BaseURL}/v1/embeddings, 请求格式:

{ "input": [...], "model": "text-embedding-3-small" }

func NewOpenAIEmbedder

func NewOpenAIEmbedder(baseURL, apiKey, model string) *OpenAIEmbedder

NewOpenAIEmbedder 创建 OpenAIEmbedder。 baseURL 示例:

func (*OpenAIEmbedder) EmbedText

func (e *OpenAIEmbedder) EmbedText(ctx context.Context, texts []string) ([][]float32, error)

EmbedText 调用 OpenAI 兼容的 embeddings 接口。

type Query

type Query struct {
	Vector    []float32      // 查询向量
	TopK      int            // 返回结果数量
	Namespace string         // 逻辑命名空间
	Filter    map[string]any // 额外过滤条件(可选)
	OrgID     string         // 组织 ID 过滤(多租户支持)
	TenantID  string         // 租户 ID 过滤(多租户支持)
}

Query 表示一次向量检索请求。

type VectorStore

type VectorStore interface {
	Upsert(ctx context.Context, docs []Document) error
	Delete(ctx context.Context, ids []string) error
	Query(ctx context.Context, q Query) ([]Hit, error)
	Close() error
}

VectorStore 抽象向量存储接口。 核心运行时只依赖该接口,不关心具体实现(pgvector/Qdrant/内存等)。

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL