适用场景:只想要轻量 RAG(向量检索)而不引入完整知识管理器;需要显式控制哪些 Agent 有知识检索能力。
pkg/knowledge/core(依赖 VectorStore + Embedder)。pkg/tools/knowledge 提供 KnowledgeAdd / KnowledgeSearch 工具 工厂,不会默认注册到 builtin registry。import (
"github.com/astercloud/aster/pkg/knowledge/core"
knowledgeTools "github.com/astercloud/aster/pkg/tools/knowledge"
"github.com/astercloud/aster/pkg/tools"
"github.com/astercloud/aster/pkg/types"
"github.com/astercloud/aster/pkg/vector"
)
// 1) 创建核心管线(可替换为 pgvector/真实 embedder)
pipe, _ := core.NewPipeline(core.PipelineConfig{
Store: vector.NewMemoryStore(),
Embedder: vector.NewMockEmbedder(32),
Namespace: "demo",
})
// 2) 创建工厂产出工具
factory := knowledgeTools.NewFactory(pipe)
addTool, _ := factory.KnowledgeAddTool()
searchTool, _ := factory.KnowledgeSearchTool()
// 3) 注册到 Agent 的工具表(显式控制)
registry := tools.NewRegistry()
registry.Register(addTool.Name(), func(cfg map[string]interface{}) (tools.Tool, error) { return addTool, nil })
registry.Register(searchTool.Name(), func(cfg map[string]interface{}) (tools.Tool, error) { return searchTool, nil })
agentCfg := &types.AgentConfig{
TemplateID: "demo",
Tools: []string{addTool.Name(), searchTool.Name()},
}
// 创建 Agent 时将 registry 作为依赖注入(见 pkg/agent/Create 的 deps.ToolRegistry)
KnowledgeAdd 输入:text(必填),可选 id、namespace、metadata。返回写入的 chunk ID。KnowledgeSearch 输入:query(必填),可选 top_k、namespace、metadata 过滤。返回 results: [{id, score, text, metadata}]。structured_output 中间件搭配,解析工具结果或模型响应的结构化 JSON。NewFactoryPipeline(customStore, customEmbedder) 创建工厂即可。