Skip to content

About

混合RAG知识库系统,支持向量检索+文档管理,已集成ChromaDB与自定义Embedding API

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

Knowledge Base RAG - 混合RAG知识库系统

通过向量检索 + 文件系统文档管理,为 Agent 提供按需查阅内部知识的能力。


核心特性

  • 多格式支持:.md .txt .json .pdf .docx
  • 向量检索:ChromaDB 本地持久化 + 自定义 Embedding API
  • 智能分类:inbox 模式,自动分析内容并分类到对应目录
  • 增量更新:新增/删除文档后一键重建索引

系统架构

knowledge/
├── inbox/              ← 新文档入口(自动分类入库)
├── 公司制度/           ← 内部制度文档
├── 业务知识/           ← 业务流程文档
└── 技术文档/           ← 技术规格文档

核心模块:
├── SKILL.md           ← Agent 调用接口
├── config.py          ← 配置(Embedding API / 向量库)
├── store.py           ← ChromaDB CRUD
├── indexer.py         ← 索引管理(rebuild/add/remove)
├── search.py          ← 检索 + 重排 + 格式化
├── extractor.py       ← 文档内容提取(pdf/docx/md等)
└── process_inbox.py   ← inbox 自动分类入库

使用流程

1. 添加新知识

将文档放入 knowledge/inbox/
说"有新知识入库"
→ 自动完成:读取→分类→移动→重建索引

2. 检索知识

通过 query_knowledge_base() 接口检索
返回 documents / summary / sources

3. 更新索引

python indexer.py rebuild      # 重建全部索引
python indexer.py add <file> <category>   # 添加单个文件
python indexer.py remove <file> <category>  # 删除文件
python indexer.py list        # 列出已索引文档

输出格式

{
  "documents": [
    {"content": "文档片段...", "category": "技术文档", "score": 0.46}
  ],
  "summary": "拼接好的上下文摘要",
  "sources": ["技术文档/大模型算法工程师.pdf"]
}

安装依赖

conda activate openclaw
pip install chromadb requests pdfplumber python-docx

Agent 接入

在 Agent 系统提示词中定义触发规则:

当用户询问公司内部制度、业务流程、技术文档等需要精确信息时,调用 query_knowledge_base 获取知识库内容。

决策:【需要知识库】
检索结果:{...}
最终回答:...

复用指南(如何部署到自己的环境)

环境要求

  • Python 3.10+(推荐 conda 管理)
  • 网络可访问 Embedding API

部署步骤

1. 克隆仓库

git clone https://github.com/AKA-liang/knowledge-base-rag.git
cd knowledge-base-rag

2. 创建 Python 环境

conda create -n kb-rag python=3.10
conda activate kb-rag

3. 安装依赖

pip install chromadb requests pdfplumber python-docx

4. 配置 Embedding API

方式一:设置环境变量(推荐)

# Linux/Mac
export EMBEDDING_API_URL="你的API地址"
export EMBEDDING_API_KEY="你的API密钥"
export EMBEDDING_MODEL="你的模型名"

# Windows PowerShell
$env:EMBEDDING_API_URL="你的API地址"
$env:EMBEDDING_API_KEY="你的API密钥"
$env:EMBEDDING_MODEL="你的模型名"

方式二:创建 .env 文件

# 复制示例文件
copy .env.example .env
# 编辑 .env,填入你的实际值

5. 初始化索引

cd knowledge-base-rag
python -c "from store import get_embedding_client; from indexer import index_directory; index_directory(get_embedding_client(), verbose=True)"

6. 添加知识(可选) 将文档放入 knowledge/inbox/,然后:

python process_inbox.py

7. 测试检索

python search.py 你的测试问题

目录结构说明

knowledge-base-rag/
├── knowledge/
│   ├── inbox/          ← 新文档放这里(自动分类)
│   ├── 公司制度/        ← 内部制度文档(可自行添加)
│   ├── 业务知识/        ← 业务流程文档(可自行添加)
│   └── 技术文档/        ← 技术规格文档(可自行添加)
└── chroma/             ← 向量数据库(自动生成,不要提交到Git)

Agent 接入

在 OpenClaw(或支持 Function Calling 的 Agent)中注册:

# 注册 query_knowledge_base 函数
# description: 当用户询问公司内部制度、业务流程、技术文档等需要精确信息时调用

常见问题

问题 解决方案
检索结果为空 运行 python indexer.py rebuild 重建索引
API 连接失败 检查 config.py 中的 API URL 和 Key 是否正确
ChromaDB 报错 删除 chroma/ 目录后重新 rebuild

Made with ❤️ by 毛线(OpenClaw AI Assistant)

About

混合RAG知识库系统,支持向量检索+文档管理,已集成ChromaDB与自定义Embedding API

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages