[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"tool-hhhuang--CAG":3,"similar-hhhuang--CAG":79},{"id":4,"github_repo":5,"name":6,"description_en":7,"description_zh":8,"ai_summary_zh":8,"readme_en":9,"readme_zh":10,"quickstart_zh":11,"use_case_zh":12,"hero_image_url":13,"owner_login":14,"owner_name":15,"owner_avatar_url":16,"owner_bio":17,"owner_company":18,"owner_location":19,"owner_email":20,"owner_twitter":17,"owner_website":21,"owner_url":22,"languages":23,"stars":36,"forks":37,"last_commit_at":38,"license":39,"difficulty_score":40,"env_os":41,"env_gpu":42,"env_ram":43,"env_deps":44,"category_tags":52,"github_topics":55,"view_count":35,"oss_zip_url":17,"oss_zip_packed_at":17,"status":59,"created_at":60,"updated_at":61,"faqs":62,"releases":78},2160,"hhhuang\u002FCAG","CAG","Cache-Augmented Generation: A Simple, Efficient Alternative to RAG","CAG（Cache-Augmented Generation）是一种旨在替代传统检索增强生成（RAG）的高效新范式。它针对 RAG 架构中常见的实时检索延迟、检索结果不准确以及系统维护复杂等痛点，提出了一种“以空间换时间”的解决思路。\n\nCAG 的核心机制在于充分利用现代大语言模型日益扩大的上下文窗口能力。它在推理前将所有相关知识资源预加载至模型上下文中，并缓存关键的运行时参数（KV-cache）。在实际回答问题时，模型直接利用缓存状态生成回复，完全省去了耗时的实时检索步骤。这种设计不仅显著降低了响应延迟，还因避免了检索环节的误差而提升了回答的可靠性，同时大幅简化了系统架构。\n\n当然，CAG 也有其适用边界：它要求知识库总量必须能容纳在模型的上下文窗口内，因此目前更适合中等规模数据集的场景，而非海量知识库。随着长上下文模型技术的进步，这一限制正在被逐步打破。\n\nCAG 非常适合 AI 研究人员、后端开发者以及需要构建低延迟、高可靠问答系统的技术团队使用。对于希望简化 RAG 流程、探索大模型原生上下文潜力的从业者来说，这是一个极具参考价值的开源项目。","# Cache-Augmented Generation (CAG)\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fhhhuang_CAG_readme_4c97da5a0e5a.png\" width=600 alt=\"Overview of CAG\">\n\nRetrieval-Augmented Generation (RAG) has emerged as a powerful approach for enhancing language models by integrating external knowledge sources. However, RAG also introduces several challenges, including:  \n- **Retrieval Latency** – Delays caused by real-time retrieval steps.  \n- **Retrieval Errors** – Inaccuracies in selecting relevant documents.  \n- **System Complexity** – Increased architectural and maintenance overhead.  \n\nTo address these limitations, we propose **Cache-Augmented Generation (CAG)**—an alternative paradigm that bypasses real-time retrieval. CAG leverages the extended context windows of modern large language models (LLMs) by preloading all relevant resources into the model’s context and caching its runtime parameters. During inference, the preloaded KV-cache enables the model to generate responses directly, eliminating the need for retrieval.  \n\n**Advantages of CAG**  \n- **Reduced Latency** – Eliminates real-time retrieval, enabling faster inference.  \n- **Improved Reliability** – Minimizes retrieval errors while maintaining context relevance.  \n- **Simplified Design** – Provides a streamlined, retrieval-free alternative to RAG, achieving comparable or superior results with lower complexity.  \n\n**Limitations of CAG**  \n- **Limited Knowledge Size** – CAG requires the entire knowledge source to fit within the context window, making it less suitable for tasks involving extremely large datasets.  \n- **Context Length Constraints** – The performance of LLMs may degrade with very long contexts ([reference](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2404.02060v2)).  \n\nOur [paper](https:\u002F\u002Farxiv.org\u002Fabs\u002F2412.15605), which will be presented at [the ACM Web Conference 2025](https:\u002F\u002Fwww2025.thewebconf.org\u002F) as a short paper, investigates the relationship between model performance and context length, providing insights into scenarios where CAG excels.  \n\nThe limitations of CAG are rapidly being addressed by advancements in LLMs with longer context windows and improved capabilities for extracting relevant information from extended inputs. As these models continue to evolve, CAG is expected to handle increasingly complex applications, making it a practical and scalable alternative to traditional RAG.  \n\n---\n\n## Installation \n```bash\npip install -r .\u002Frequirements.txt\n```\n\n## Preparation\n> [!IMPORTANT]  \n> download the required `squad` and `hotpotqa` datasets by curl script\n> ```bash\n> sh .\u002Fdownloads.sh\n> ```\n\n> [!IMPORTANT]\n> create `.env` file by `.env.template` and input the keys required\n> ```bash\n> cp .\u002F.env.template .\u002F.env\n> ```\n\n## Usage\n- `rag.py` is for RAG Experiment\n- `kvcache.py` is for CAG Experiment\n\n## Parameter Usage -- kvcache.py\n- `--kvcache`: \"file\"\n- `--dataset`: \"hotpotqa-train\" or \"squad-train\"\n- `--similarity` \"bertscore\"\n- `--modelname`: \"meta-llama\u002FLlama-3.1-8B-Instruct\"\n- `--maxKnowledge`: \"\", int, select how many document in dataset, explanation in Note\n- `--maxParagraph`: 100\n- `--maxQuestion` int, max question number, explanation in Note\n- `--randomSeed`: \"\", int, a random seed number\n- `--output`: \"\", str, output filepath string\n- `--usePrompt`, add this parameter if not using CAG knowledge cache acceleration \n\n### Example -- kvcache.py\n```bash\npython .\u002Fkvcache.py --kvcache file --dataset \"squad-train\" --similarity bertscore \\\n    --maxKnowledge 5 --maxParagraph 100 --maxQuestion 1000  \\\n    --modelname \"meta-llama\u002FLlama-3.1-8B-Instruct\" --randomSeed 0 \\\n    --output \".\u002Fresult_kvcache.txt\"\n```\n\n## Parameter Usage -- rag.py\n- `--index`: \"openai\" or \"bm25\"\n- `--dataset`: \"hotpotqa-train\" or \"squad-train\"\n- `--similarity` \"bertscore\"\n- `--maxKnowledge`: \"\", int, select how many document in dataset, explanation in Note\n- `--maxParagraph`: 100\n- `--maxQuestion` int, max question number, explanation in Note\n- `--topk`: int, the similarity topk of retrieval\n- `--modelname`: \"meta-llama\u002FLlama-3.1-8B-Instruct\"\n- `--randomSeed`: \"\", int, a random seed number\n- `--output`: \"\", str, output filepath string\n\n### Example -- rag.py\n```bash\npython .\u002Frag.py --index \"bm25\" --dataset \"hotpotqa-train\" --similarity bertscore \\\n    --maxKnowledge 80 --maxParagraph 100 --maxQuestion 80 --topk 3 \\\n    --modelname \"meta-llama\u002FLlama-3.1-8B-Instruct\" --randomSeed  0 \\\n    --output  \".\u002Frag_results.txt\"\n```\n\n### Note:\n#### `--maxKnowledge` parameter notice: \n> [!NOTE]\n> Approximate Tokens count corresponding to knowledge document size of \"squad-train\" and \"hotpotqa-train\" dataset. \n\n> datasets=(\"squad-train\")\n> - when k = 3, tokens = 21,000\n> - when k = 4, tokens = 32,000\n> - when k = 7, tokens = 50,000\n> \n> datasets=(\"hotpotqa-train\")\n> - all k = 7405 article, tokens = 10,038,084 \n> - when k = 1, tokens = 1,400\n> - when k = 16, tokens = 22,400\n> - when k = 24, tokens = 33,667\n> - when k = 32, tokens = 44,800\n> - when k = 48, tokens = 64,000\n> - when k = 64, tokens = 85,000\n> - when k = 80, tokens = 106,000\n\n#### `--maxQuestion` parameter notice:\n> - when using \"squad-train\" dataset, 1 knowledge has average 150 questions\n> - when using \"hotpotqa-train\" dataset, 1 knowledge has 1 question\n\n> [!TIP]\n> Since 1 document in \"hotpoqa-train\" dataset has only 1 question, it may not satisfy large-scale evaluation.\n> Multiple evaluation could be a relatively better approach.\n> \n\n#### `Docker`\n\nTo build the docker image, run\n```bash\n docker build -t my-cag-app .\n ```\n\n and to run the container, run this for GPU users\n\n```bash\ndocker run --gpus all -it --rm my-cag-app\n```\nOR\n```bash\ndocker run -it --rm my-cag-app\n```\nfor CPU users.\n\nif the .env file details were empty while building you will get error similar to this below\n\n```bash\nTraceback (most recent call last):\n  File \"\u002Fapp\u002F.\u002Fkvcache.py\", line 35, in \u003Cmodule>\n    env = validate_env_variables()\n          ^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"\u002Fapp\u002F.\u002Fkvcache.py\", line 31, in validate_env_variables\n    raise ValueError(f\"Missing required environment variable: {key}\")\nValueError: Missing required environment variable: HF_TOKEN\n``` \n\nso ensure you populate the `.env` file before building the docker image \n\nNote that the he `CMD` directive in the Dockerfile runs the `kvcache.py ` script by default. You can override this in the docker run command if you'd like to execute other scripts like rag.py. For example:\n\n```bash\ndocker run --gpus all -it --rm my-cag-app python .\u002Frag.py --index \"bm25\" --dataset \"hotpotqa-train\" --similarity bertscore --maxKnowledge 80 --maxParagraph 100 --maxQuestion 80 --topk 3 --modelname \"meta-llama\u002FLlama-3.1-8B-Instruct\" --randomSeed 0 --output \".\u002Frag_results.txt\"\n```\n\n## Citation\n```\n@misc{chan2024dontragcacheaugmentedgeneration,\n      title={Don't Do RAG: When Cache-Augmented Generation is All You Need for Knowledge Tasks}, \n      author={Brian J Chan and Chao-Ting Chen and Jui-Hung Cheng and Hen-Hsen Huang},\n      year={2024},\n      eprint={2412.15605},\n      archivePrefix={arXiv},\n      primaryClass={cs.CL},\n      url={https:\u002F\u002Farxiv.org\u002Fabs\u002F2412.15605}, \n}\n```\n\n## Acknowledgments\nThis work was partially supported by National Science and Technology Council (NSTC), Taiwan, under the grant 112-2221-E-001-016-MY3, by Academia Sinica, under the grant 236d-1120205, and by National Center for High-performance Computing (NCHC), National Applied Research Laboratories (NARLabs), and NSTC under the project \"Taiwan's 113th year endeavoring in the promotion of a trustworthy generative AI large language model and the cultivation of literacy capabilities (Trustworthy AI Dialog Engine, TAIDE)\".\nWe sincerely thank [Discover AI](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=NaEf_uiFX6o) and the many individuals who have introduced, shared, and discussed our work, contributing to its broader visibility and impact.\n","# 缓存增强生成 (CAG)\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fhhhuang_CAG_readme_4c97da5a0e5a.png\" width=600 alt=\"CAG 概览\">\n\n检索增强生成 (RAG) 已成为一种强大的方法，通过整合外部知识源来增强语言模型。然而，RAG 也带来了一些挑战，包括：\n- **检索延迟**——由实时检索步骤引起的延迟。\n- **检索错误**——在选择相关文档时出现的不准确性。\n- **系统复杂度**——增加了架构和维护开销。\n\n为了解决这些限制，我们提出了**缓存增强生成 (CAG)**——一种绕过实时检索的替代范式。CAG 利用现代大型语言模型 (LLM) 的扩展上下文窗口，将所有相关资源预先加载到模型的上下文中，并缓存其运行时参数。在推理过程中，预加载的 KV 缓存使模型能够直接生成响应，从而无需进行检索。\n\n**CAG 的优势**\n- **降低延迟**——消除了实时检索，实现了更快的推理速度。\n- **提高可靠性**——在保持上下文相关性的同时，最大限度地减少了检索错误。\n- **简化设计**——提供了一种无检索的精简替代方案，以更低的复杂度实现与 RAG 相当或更优的结果。\n\n**CAG 的局限性**\n- **知识规模有限**——CAG 要求整个知识源能够容纳在上下文窗口内，因此不太适合涉及超大规模数据集的任务。\n- **上下文长度限制**——当上下文非常长时，LLM 的性能可能会下降（[参考](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2404.02060v2)）。\n\n我们的[论文](https:\u002F\u002Farxiv.org\u002Fabs\u002F2412.15605)，将在[ACM Web Conference 2025](https:\u002F\u002Fwww2025.thewebconf.org\u002F)上以短文形式发表，探讨了模型性能与上下文长度之间的关系，并提供了 CAG 在哪些场景下表现优异的见解。\n\n随着具有更长上下文窗口和更强提取扩展输入中相关信息能力的 LLM 的不断进步，CAG 的局限性正迅速得到缓解。预计随着这些模型的持续发展，CAG 将能够处理日益复杂的任务，成为传统 RAG 的一种实用且可扩展的替代方案。\n\n---\n\n## 安装\n```bash\npip install -r .\u002Frequirements.txt\n```\n\n## 准备\n> [!重要]\n> 使用 curl 脚本下载所需的 `squad` 和 `hotpotqa` 数据集\n> ```bash\n> sh .\u002Fdownloads.sh\n> ```\n\n> [!重要]\n> 根据 `.env.template` 文件创建 `.env` 文件，并填写所需密钥\n> ```bash\n> cp .\u002F.env.template .\u002F.env\n> ```\n\n## 使用\n- `rag.py` 用于 RAG 实验。\n- `kvcache.py` 用于 CAG 实验。\n\n## 参数使用 — kvcache.py\n- `--kvcache`: \"file\"\n- `--dataset`: \"hotpotqa-train\" 或 \"squad-train\"\n- `--similarity` \"bertscore\"\n- `--modelname`: \"meta-llama\u002FLlama-3.1-8B-Instruct\"\n- `--maxKnowledge`: \"\", 整数，选择数据集中包含多少篇文档，具体说明见注释。\n- `--maxParagraph`: 100\n- `--maxQuestion` 整数，最大问题数量，具体说明见注释。\n- `--randomSeed`: \"\", 整数，随机种子数值。\n- `--output`: \"\", 字符串，输出文件路径。\n- `--usePrompt`，如果不使用 CAG 知识缓存加速，则添加此参数。\n\n### 示例 — kvcache.py\n```bash\npython .\u002Fkvcache.py --kvcache file --dataset \"squad-train\" --similarity bertscore \\\n    --maxKnowledge 5 --maxParagraph 100 --maxQuestion 1000  \\\n    --modelname \"meta-llama\u002FLlama-3.1-8B-Instruct\" --randomSeed 0 \\\n    --output \".\u002Fresult_kvcache.txt\"\n```\n\n## 参数使用 — rag.py\n- `--index`: \"openai\" 或 \"bm25\"\n- `--dataset`: \"hotpotqa-train\" 或 \"squad-train\"\n- `--similarity` \"bertscore\"\n- `--maxKnowledge`: \"\", 整数，选择数据集中包含多少篇文档，具体说明见注释。\n- `--maxParagraph`: 100\n- `--maxQuestion` 整数，最大问题数量，具体说明见注释。\n- `--topk` 整数，检索相似度的前 k 个结果。\n- `--modelname`: \"meta-llama\u002FLlama-3.1-8B-Instruct\"\n- `--randomSeed`: \"\", 整数，随机种子数值。\n- `--output`: \"\", 字符串，输出文件路径。\n\n### 示例 — rag.py\n```bash\npython .\u002Frag.py --index \"bm25\" --dataset \"hotpotqa-train\" --similarity bertscore \\\n    --maxKnowledge 80 --maxParagraph 100 --maxQuestion 80 --topk 3 \\\n    --modelname \"meta-llama\u002FLlama-3.1-8B-Instruct\" --randomSeed 0 \\\n    --output \".\u002Frag_results.txt\"\n```\n\n### 注释：\n#### `--maxKnowledge` 参数说明：\n> [!注释]\n> “squad-train” 和 “hotpotqa-train” 数据集的知识文档大小对应的近似令牌数。\n\n> 数据集=(\"squad-train\")\n> - 当 k = 3 时，令牌数为 21,000\n> - 当 k = 4 时，令牌数为 32,000\n> - 当 k = 7 时，令牌数为 50,000\n\n> 数据集=(\"hotpotqa-train\")\n> - 总共有 7,405 篇文章，总令牌数为 10,038,084\n> - 当 k = 1 时，令牌数为 1,400\n> - 当 k = 16 时，令牌数为 22,400\n> - 当 k = 24 时，令牌数为 33,667\n> - 当 k = 32 时，令牌数为 44,800\n> - 当 k = 48 时，令牌数为 64,000\n> - 当 k = 64 时，令牌数为 85,000\n> - 当 k = 80 时，令牌数为 106,000\n\n#### `--maxQuestion` 参数说明：\n> - 使用“squad-train”数据集时，每篇知识文档平均有 150 个问题。\n> - 使用“hotpotqa-train”数据集时，每篇知识文档只有 1 个问题。\n\n> [!提示]\n> 由于“hotpoqa-train”数据集中的每篇文档仅包含 1 个问题，可能无法满足大规模评估的需求。采用多次评估的方式可能会更为合适。\n> \n\n#### `Docker`\n\n要构建 Docker 镜像，请运行以下命令：\n```bash\ndocker build -t my-cag-app .\n```\n\n对于 GPU 用户，运行容器的命令如下：\n```bash\ndocker run --gpus all -it --rm my-cag-app\n```\n或者，对于 CPU 用户：\n```bash\ndocker run -it --rm my-cag-app\n```\n\n如果在构建镜像时 `.env` 文件未填写完整，您可能会遇到类似以下的错误：\n```bash\nTraceback (most recent call last):\n  File \"\u002Fapp\u002F.\u002Fkvcache.py\", line 35, in \u003Cmodule>\n    env = validate_env_variables()\n          ^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"\u002Fapp\u002F.\u002Fkvcache.py\", line 31, in validate_env_variables\n    raise ValueError(f\"Missing required environment variable: {key}\")\nValueError: Missing required environment variable: HF_TOKEN\n```\n\n因此，在构建 Docker 镜像之前，请务必填写好 `.env` 文件。\n\n请注意，Dockerfile 中的 `CMD` 指令默认会运行 `kvcache.py` 脚本。如果您希望执行其他脚本（如 `rag.py`），可以在 `docker run` 命令中覆盖此设置。例如：\n```bash\ndocker run --gpus all -it --rm my-cag-app python .\u002Frag.py --index \"bm25\" --dataset \"hotpotqa-train\" --similarity bertscore --maxKnowledge 80 --maxParagraph 100 --maxQuestion 80 --topk 3 --modelname \"meta-llama\u002FLlama-3.1-8B-Instruct\" --randomSeed 0 --output \".\u002Frag_results.txt\"\n```\n\n## 引用\n```\n@misc{chan2024dontragcacheaugmentedgeneration,\n      title={别再用RAG了：缓存增强生成足以应对知识型任务}, \n      author={Brian J Chan、Chao-Ting Chen、Jui-Hung Cheng、Hen-Hsen Huang},\n      year={2024},\n      eprint={2412.15605},\n      archivePrefix={arXiv},\n      primaryClass={cs.CL},\n      url={https:\u002F\u002Farxiv.org\u002Fabs\u002F2412.15605}, \n}\n```\n\n## 致谢\n本研究得到了台湾国家科学及技术委员会（NSTC）资助项目112-2221-E-001-016-MY3、中央研究院资助项目236d-1120205，以及国家高速计算机中心（NCHC）、国家实验研究院（NARLabs）和NSTC联合资助的“台湾113年度推进可信生成式AI大型语言模型及素养能力培养计划（可信AI对话引擎，TAIDE）”的支持。\n我们衷心感谢[Discover AI](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=NaEf_uiFX6o)以及众多介绍、分享和讨论本研究的个人，正是他们的努力使我们的工作获得了更广泛的可见度和影响力。","# CAG (Cache-Augmented Generation) 快速上手指南\n\nCAG 是一种替代传统 RAG（检索增强生成）的新范式。它通过将相关知识预加载到大模型的上下文窗口中并缓存 KV Cache，从而消除实时检索步骤，显著降低延迟并简化系统架构。本指南帮助开发者快速部署并运行 CAG 实验。\n\n## 环境准备\n\n在开始之前，请确保满足以下系统和软件要求：\n\n*   **操作系统**: Linux 或 macOS (Windows 用户建议使用 WSL2 或 Docker)。\n*   **Python**: 版本 3.8 或更高。\n*   **GPU (可选但推荐)**: 如需加速推理，请安装对应的 NVIDIA 驱动和 CUDA 工具包。\n*   **账号与密钥**:\n    *   **Hugging Face Token**: 用于下载模型（如 Llama 3.1）。需提前在 Hugging Face 官网申请并获取 `HF_TOKEN`。\n    *   **OpenAI API Key** (仅在使用 RAG 对比实验且索引设为 openai 时需要)。\n\n## 安装步骤\n\n### 1. 克隆项目与安装依赖\n首先克隆代码库并安装 Python 依赖包。国内用户若遇到 pip 下载慢的问题，可临时使用清华或阿里镜像源。\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fhhhuang\u002FCAG.git\ncd CAG\npip install -r requirements.txt -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n### 2. 配置环境变量\n复制环境变量模板文件，并填入必要的 API 密钥（主要是 `HF_TOKEN`）。\n\n```bash\ncp .\u002F.env.template .\u002F.env\n```\n> **注意**: 请使用文本编辑器打开 `.env` 文件，填入你的 `HF_TOKEN`。若留空，运行时会报错 `Missing required environment variable: HF_TOKEN`。\n\n### 3. 下载数据集\n执行脚本下载实验所需的 `squad` 和 `hotpotqa` 数据集。\n\n```bash\nsh .\u002Fdownloads.sh\n```\n\n## 基本使用\n\nCAG 的核心功能通过 `kvcache.py` 脚本实现。以下是一个最简单的运行示例，该命令将使用 Llama-3.1-8B 模型在 SQuAD 数据集上运行 CAG 实验。\n\n### 运行 CAG 实验\n\n```bash\npython .\u002Fkvcache.py --kvcache file --dataset \"squad-train\" --similarity bertscore \\\n    --maxKnowledge 5 --maxParagraph 100 --maxQuestion 1000  \\\n    --modelname \"meta-llama\u002FLlama-3.1-8B-Instruct\" --randomSeed 0 \\\n    --output \".\u002Fresult_kvcache.txt\"\n```\n\n**参数说明：**\n*   `--dataset`: 选择数据集，可选 `\"squad-train\"` 或 `\"hotpotqa-train\"`。\n*   `--maxKnowledge`: 加载的知识文档数量。**注意**：此数值直接决定 Context Length（上下文长度），需确保不超过模型支持的最大窗口。\n    *   例如在 `squad-train` 中，`k=5` 约占用 40k+ tokens。\n    *   在 `hotpotqa-train` 中，`k=80` 约占用 106k tokens。\n*   `--modelname`: 指定使用的 Hugging Face 模型名称。\n*   `--usePrompt`: 如果添加此参数，则不使用 CAG 缓存加速，退化为普通 Prompt 模式（用于对比）。\n\n### 可选：运行 RAG 对比实验\n若需与传统 RAG 方法进行效果对比，可使用 `rag.py`：\n\n```bash\npython .\u002Frag.py --index \"bm25\" --dataset \"hotpotqa-train\" --similarity bertscore \\\n    --maxKnowledge 80 --maxParagraph 100 --maxQuestion 80 --topk 3 \\\n    --modelname \"meta-llama\u002FLlama-3.1-8B-Instruct\" --randomSeed  0 \\\n    --output  \".\u002Frag_results.txt\"\n```\n\n### 可选：使用 Docker 运行\n如果你希望隔离环境或使用容器化部署：\n\n1.  **构建镜像** (确保构建前已正确填写 `.env` 文件):\n    ```bash\n    docker build -t my-cag-app .\n    ```\n2.  **运行容器** (GPU 用户):\n    ```bash\n    docker run --gpus all -it --rm my-cag-app\n    ```\n    *(CPU 用户去掉 `--gpus all` 参数即可)*","某中型法律科技团队正在开发一款内部合同审查助手，需要基于公司积累的 500 份标准合同模板和法规文档，为律师提供实时的条款合规性建议。\n\n### 没有 CAG 时\n- **响应延迟明显**：每次律师提问，系统都需实时检索向量数据库，平均等待时间超过 2 秒，打断审查思路。\n- **关键信息遗漏**：检索算法偶尔误判相关性，导致模型未能获取最匹配的合同范本，生成建议出现偏差。\n- **架构维护繁琐**：团队需同时维护向量索引、检索服务和生成模型，排查故障时链路复杂，运维成本高。\n- **并发性能瓶颈**：在高并发场景下，检索服务成为短板，导致整体吞吐量下降，难以支撑全员同时使用。\n\n### 使用 CAG 后\n- **毫秒级即时反馈**：CAG 将所有合同知识预加载至模型上下文并缓存 KV 参数，消除检索步骤，响应速度提升至毫秒级。\n- **答案精准度提升**：直接利用全量上下文避免检索误差，模型能准确引用特定条款细节，建议可靠性显著增强。\n- **系统架构极简**：移除了独立的检索模块和向量数据库依赖，整个服务简化为“模型 + 缓存”，部署与维护大幅轻松。\n- **高吞吐稳定运行**：去除了外部检索调用的不确定性，系统在高峰期仍能保持稳定的推理速度和一致性。\n\nCAG 通过以空间换时间的策略，在知识规模可控的场景下，用更简单的架构实现了比传统 RAG 更快、更准的生成效果。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fhhhuang_CAG_4c97da5a.png","hhhuang","Hen-Hsen Huang","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fhhhuang_835b72c7.jpg",null,"Institute of Information Science, Academia Sinica","Taipei City, Taiwan","huangs@gmail.com","https:\u002F\u002Fhomepage.iis.sinica.edu.tw\u002Fpages\u002Fhhhuang\u002F","https:\u002F\u002Fgithub.com\u002Fhhhuang",[24,28,32],{"name":25,"color":26,"percentage":27},"Python","#3572A5",51.5,{"name":29,"color":30,"percentage":31},"Shell","#89e051",46.4,{"name":33,"color":34,"percentage":35},"Dockerfile","#384d54",2,1476,219,"2026-04-05T01:08:09","MIT",3,"Linux, macOS, Windows","非绝对必需（支持 CPU 运行），但推荐 NVIDIA GPU 以加速推理。具体型号和显存取决于所选模型及上下文长度（例如运行 Llama-3.1-8B 并加载大量文档可能需要 16GB+ 显存）。","未说明（建议根据模型大小和上下文窗口长度配置，处理长上下文时推荐 32GB+）",{"notes":45,"python":46,"dependencies":47},"1. 必须配置 .env 文件并填入 Hugging Face Token (HF_TOKEN) 等密钥，否则运行会报错。\n2. 首次运行前需执行下载脚本 (sh .\u002Fdownloads.sh) 获取 SQuAD 和 HotpotQA 数据集。\n3. 核心限制是知识总量必须能放入模型的上下文窗口（Context Window），不适合超大规模数据集。\n4. 支持 Docker 部署，构建镜像前务必先填充 .env 文件。\n5. 默认模型示例为 meta-llama\u002FLlama-3.1-8B-Instruct，需具备访问该模型的权限。","未说明",[48,49,50,51],"requirements.txt 中定义的依赖包","transformers (隐含，用于加载 Llama 模型)","torch (隐含，用于 KV Cache 和推理)","bert-score (隐含，用于相似度评估)",[53,54],"开发框架","语言模型",[56,57,58],"cag","llm","rag","ready","2026-03-27T02:49:30.150509","2026-04-06T07:12:48.065338",[63,68,73],{"id":64,"question_zh":65,"answer_zh":66,"source_url":67},9972,"如何正确设置 Hugging Face Token (HF_TOKEN) 以访问受限模型？","可以通过两种方式解决：\n1. 使用命令行登录：运行 `!huggingface-cli login` 并按提示输入 Token。\n2. 将 Token 写入 `.env` 文件。\n注意：如果模型过大（如 Mistral-7B），可能需要使用 GGUF 格式并进行量化（Quantized）才能在本地运行。","https:\u002F\u002Fgithub.com\u002Fhhhuang\u002FCAG\u002Fissues\u002F19",{"id":69,"question_zh":70,"answer_zh":71,"source_url":72},9973,"在 Mac (CPU\u002FMPS) 上运行 kvcache 时遇到 'Invalid Buffer size' 或内存错误怎么办？","这通常是由于在 Mac 上使用 CPU 运行时内存不足（Out-of-Memory）导致的。建议解决方案：\n1. 强烈建议使用专用 GPU 运行大型语言模型。\n2. 如果没有本地 GPU，建议使用 Google Colab，它提供免费 tier 的 GPU 支持。","https:\u002F\u002Fgithub.com\u002Fhhhuang\u002FCAG\u002Fissues\u002F16",{"id":74,"question_zh":75,"answer_zh":76,"source_url":77},9974,"在 Google Colab 上运行时遇到 bitsandbytes 相关的 CUDA 注册错误或警告如何解决？","这是由于 bitsandbytes 版本兼容性问题导致的。可以通过强制安装特定版本来解决，请在 Colab 中运行以下命令：\n`!pip install --no-cache-dir bitsandbytes==0.45.5`","https:\u002F\u002Fgithub.com\u002Fhhhuang\u002FCAG\u002Fissues\u002F24",[],[80,90,98,106,114,127],{"id":81,"name":82,"github_repo":83,"description_zh":84,"stars":85,"difficulty_score":40,"last_commit_at":86,"category_tags":87,"status":59},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[53,88,89],"图像","Agent",{"id":91,"name":92,"github_repo":93,"description_zh":94,"stars":95,"difficulty_score":35,"last_commit_at":96,"category_tags":97,"status":59},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",138956,"2026-04-05T11:33:21",[53,89,54],{"id":99,"name":100,"github_repo":101,"description_zh":102,"stars":103,"difficulty_score":35,"last_commit_at":104,"category_tags":105,"status":59},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,"2026-04-03T11:11:01",[53,88,89],{"id":107,"name":108,"github_repo":109,"description_zh":110,"stars":111,"difficulty_score":35,"last_commit_at":112,"category_tags":113,"status":59},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[53,54],{"id":115,"name":116,"github_repo":117,"description_zh":118,"stars":119,"difficulty_score":35,"last_commit_at":120,"category_tags":121,"status":59},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[88,122,123,124,89,125,54,53,126],"数据工具","视频","插件","其他","音频",{"id":128,"name":129,"github_repo":130,"description_zh":131,"stars":132,"difficulty_score":40,"last_commit_at":133,"category_tags":134,"status":59},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,"2026-04-04T04:44:48",[89,88,53,54,125]]