
项目预览
项目数据
项目介绍
Star 增长趋势
本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整
数据来源:GitHub API 逐日快照 · 收录于 2026-08-09 · 当前星标 ★ 1614
使用教程
ℹ 本教程由 AI 依据该项目 README 整理,个别步骤可能需要按你的环境微调。
环境要求
- Python 环境(README 未指定具体版本,需能运行 pip)
- 已安装 requirements.txt 中的依赖
- Hugging Face 访问令牌 HF_TOKEN(写入 .env 文件)
- 可选:Docker;GPU 用户需支持 --gpus all 的运行时
安装与启动步骤
-
1获取项目代码
从 GitHub 克隆仓库并进入项目目录,后续所有命令都在该目录下执行。
git clone https://github.com/hhhuang/CAG.git cd CAG -
2安装依赖
按 README 的 Installation 一节安装 requirements.txt 中列出的全部依赖。
pip install -r ./requirements.txt -
3配置 .env
在项目根目录创建 .env,至少写入 HF_TOKEN,否则运行脚本时会抛出 Missing required environment variable 错误。
echo "HF_TOKEN=hf_xxxxxxxxxxxxxxxxxxxx" > .env -
4运行 CAG 实验
kvcache.py 用于 CAG 实验;参数取自 README,--usePrompt 仅在不用缓存加速时添加。
python ./kvcache.py --kvcache "file" --dataset "hotpotqa-train" --similarity "bertscore" --modelname "meta-llama/Llama-3.1-8B-Instruct" --maxKnowledge 80 --maxParagraph 100 --maxQuestion 80 --randomSeed 0 --output "./kvcache_results.txt" -
5运行 RAG 对比
rag.py 用于 RAG 实验,命令为 README 给出的完整示例,可换 --index 为 openai。
python ./rag.py --index "bm25" --dataset "hotpotqa-train" --similarity bertscore --maxKnowledge 80 --maxParagraph 100 --maxQuestion 80 --topk 3 --modelname "meta-llama/Llama-3.1-8B-Instruct" --randomSeed 0 --output "./rag_results.txt" -
6构建 Docker 镜像
可选方式。构建前务必先填好 .env,否则容器启动时会因缺少 HF_TOKEN 报错。
docker build -t my-cag-app . -
7运行容器
GPU 用户加 --gpus all,CPU 用户直接运行;镜像默认执行 kvcache.py。
docker run --gpus all -it --rm my-cag-app -
8容器内跑 rag.py
覆盖 Dockerfile 默认 CMD,在容器里执行 RAG 实验脚本。
docker run --gpus all -it --rm my-cag-app python ./rag.py --index "bm25" --dataset "hotpotqa-train" --similarity bertscore --maxKnowledge 80 --maxParagraph 100 --maxQuestion 80 --topk 3 --modelname "meta-llama/Llama-3.1-8B-Instruct" --randomSeed 0 --output "./rag_results.txt"
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
HF_TOKEN | 是 | Hugging Face 访问令牌,脚本启动时会校验,缺失即报错退出 | hf_xxxxxxxxxxxxxxxxxxxx |
如何确认成功
脚本运行结束无异常,并在 --output 指定的路径生成结果文件;Docker 方式下容器能正常启动并进入。
常见问题
Q:运行时报 ValueError: Missing required environment variable: HF_T
A:说明 .env 中 HF_TOKEN 为空。请在构建镜像或运行脚本前先填好 .env 中的 HF_TOKEN,再重新执行。
Q:没有 GPU 能跑吗?
A:可以。README 给出了 CPU 用法:docker run -it --rm my-cag-app,即去掉 --gpus all 参数。
Q:怎么改跑 rag.py 而不是默认的 kvcache.py?
A:在 docker run 命令末尾追加 python ./rag.py 及参数,覆盖 Dockerfile 里的 CMD 指令即可,README 给出了完整示例。
Q:数据集可选哪些?
A:--dataset 支持 "hotpotqa-train" 或 "squad-train";--similarity 给出的是 "bertscore"。
注意事项
- CAG 需要把全部知识放进模型的上下文窗口,知识规模过大时不适合使用。
- --maxKnowledge、--maxParagraph、--maxQuestion 的取值说明 README 指向 Note 部分,请结合该说明调整。
- 构建 Docker 镜像前必须先填好 .env,否则运行时会报缺少 HF_TOKEN。
- Dockerfile 的 CMD 默认执行 kvcache.py,可用 docker run 命令覆盖。
核心亮点
- 省去向量数据库和检索管道,部署和维护成本大幅降低
- 推理延迟比RAG更低,因为省去了检索步骤
- 代码简洁,易于集成到现有LLM应用中
不足之处
- 知识库更新需重新构建缓存,不适合动态数据场景
- 缓存大小受限于模型上下文窗口,超大知识库不适用
- 文档/社区待观察
适用场景
- 固定知识库的问答机器人
- 低延迟要求的内部文档助手
- 离线或边缘环境下的轻量级生成任务
替代项目
RAGFlow、LlamaIndex、Haystack
上一篇:rag-from-scratch
下一篇:korvus
同类项目推荐
Awesome-LLM4Cybersecurity
开源
一张清单看懂 LLM 如何用于攻防安全
An overview of LLMs for cybersecurity.
llm-search
开源
用自然语言问本地文档,秒级精准找答案
Querying local documents, powered by LLM
OpenSearch-VL
开源
让AI看懂图片并精准搜索,训练多模态搜索智能体
OpenSearch-VL provides a fully open recipe for training strong multimodal deep searc···
Awesome-Remote-Sensing-Multimoda···
开源
一库看全遥感多模态大模型论文、数据与评测
Multimodal Large Language Models for Remote Sensing (RS-MLLMs): A Survey
AI-Search-py
开源
用大白话提问,直接拿到整理好的网页数据
Turn plain English queries into structured web data, featuring automated markdown ex···
feeds.fun
开源
用标签和 AI 评分,让新闻阅读更聪明
News reader with tags, scoring, and LLM
MiniSearch
开源
浏览器里直接搜,AI 助手随身带,隐私不泄露
Minimalist web-searching platform with an AI assistant that runs directly from your ···
arxiv-mcp-server
开源
用自然语言搜索和分析 arXiv 论文,快速获取研究要点
A local MCP server for agent literature work. Original-LaTeX section reads, BibTeX f···
LinearRAG
开源
把海量文档变成线性图,检索快十倍,内存省一半。
[ICLR 2026] LinearRAG: Linear Graph Retrieval Augmented Generation on Large-scale Co···