SuperAPI AI 工具集

rag-knowledge

数据与分析

查看项目

更新于 10-16 07:29

技能介绍

用途

RAG Knowledge Base 用于在 full-stack-ai-agent-template 项目中操作检索增强生成(RAG)知识库,包括摄取文档、执行语义搜索、管理集合,以及添加同步源/连接器(Google Drive、S3)。

RAG 栈位于 backend/app/services/rag/,包含摄取(ingestion)、向量存储(vectorstore)、嵌入(embeddings)与连接器(connectors)模块。检索能力以 search_knowledge_base 工具的形式暴露给智能体,同时通过 CLI 和仪表盘供操作人员使用。

主要能力

  • 文档摄取:解析 → 分块 → 嵌入 → 写入向量存储({{ cookiecutter.vector_store }})。重复摄取同一来源会更新内容,可用 --no-replace / --sync-mode 控制去重。
  • 语义搜索:对指定集合执行语义检索。
  • 集合管理:列出集合、查看分块/向量统计、删除集合。
  • 同步源(连接器):按计划保持集合与外部源(Google Drive、S3/MinIO)同步,可按组织在仪表盘(/orgs/[id]/integrations)或通过 CLI 管理。
  • 连接器凭据使用 CHANNEL_ENCRYPTION_KEY(Fernet)加密存储。
  • 检索调优:分块大小/重叠与解析器(PyMuPDF / LlamaParse)通过环境变量配置;启用重排序(Cohere 或本地 CrossEncoder)可改善结果排序。

使用方式

CLI(在 backend/ 目录下运行):

uv run {{ cookiecutter.project_slug }} cmd rag-ingest ./docs/ --collection docs --recursive   # 摄取文件/文件夹
uv run {{ cookiecutter.project_slug }} cmd rag-search "your question" --collection docs        # 语义搜索
uv run {{ cookiecutter.project_slug }} cmd rag-collections                                     # 列出集合
uv run {{ cookiecutter.project_slug }} cmd rag-stats                                           # 分块/向量计数
uv run {{ cookiecutter.project_slug }} cmd rag-drop <collection> --yes                         # 删除集合

同步源(连接器):

uv run {{ cookiecutter.project_slug }} cmd rag-sources                  # 列出
uv run {{ cookiecutter.project_slug }} cmd rag-source-add               # 添加(交互式)
uv run {{ cookiecutter.project_slug }} cmd rag-source-sync --all        # 触发同步

添加新连接器类型:在 backend/app/services/rag/connectors/ 中参照现有 Google Drive / S3 连接器实现,在连接器注册表中注册,并暴露其配置字段。参见 docs/howto/add-sync-connector.md 与 docs/howto/configure-sync-sources.md。

检索调优:分块大小/重叠与解析器(PyMuPDF / LlamaParse)通过环境变量配置,参见 docs/configuration.md 与 docs/rag.md。启用重排序(Cohere 或本地 CrossEncoder)可改善结果排序。

适用场景

  • 为智能体提供基于知识库的检索问答能力。
  • 将本地文档或文件夹批量导入向量存储并执行语义搜索。
  • 通过连接器将 Google Drive、S3/MinIO 等外部数据源按计划同步到知识库集合。
  • 按组织管理集成与同步源。

限制与注意事项

  • 嵌入提供者与维度按项目固定({{ cookiecutter.embedding_provider }}),不要在同一集合中混用不同嵌入;更改后需重新摄取。
  • 重型摄取作为后台任务运行,而非在请求中内联执行。
  • 若搜索效果不佳:确认集合已填充(rag-stats)、检查聊天 KB 选择器中激活的集合、验证嵌入提供者/密钥。
  • 完整流水线参考见 docs/rag.md。

(注:文中 {{ cookiecutter.* }} 为项目模板占位符,实际值由项目生成时确定。)