在过去几年中,检索增强生成 (RAG)的生态系统已经蓬勃发展。互联网上出现了越来越多旨在帮助开发者构建RAG应用的开源项目。这也是情理之中的事,因为RAG是一种用外部知识源来增强大型语言模型 (LLMs)的有效方法。
RAG管道 (pipelines)的运作方式如下:
- 系统检索文档或数据;
- 这些数据对完成用户提示的上下文具有信息价值或实用性;
- 系统将该上下文输入到LLM中,以生成准确且基于该上下文的知识性回复。
如前所述,我们将探索不同的开源RAG框架及其GitHub仓库,这些框架使用户能够轻松构建RAG系统。我们的目标是帮助开发者、学生和技术爱好者选择一个符合其需求的RAG工具包并加以利用。
为什么需要 RAG 系统
检索增强生成 (Retrieval-Augmented Generation)已迅速成为AI领域最具影响力的创新之一。随着企业越来越重视实施具有上下文感知能力的智能系统,掌握RAG不再是可选项。
公司正在利用RAG管道来构建聊天机器人 (chatbots)、知识助手 (knowledge assistants)和企业自动化 (enterprise automation)系统。这是为了确保其AI模型利用的是实时、特定领域的数据,而不是仅仅依赖预训练的知识。
在这个RAG被用于自动化智能聊天机器人、助手和企业工具的时代,彻底理解它能为你带来巨大的竞争优势。掌握如何构建和优化RAG管道,可以为你在AI开发、数据工程 (data engineering)和自动化领域打开无数扇大门。这最终将使你更具市场竞争力,并为你的职业生涯面向未来做好准备。
在追求这一精通目标的过程中,以下是用于RAG系统的顶级GitHub仓库。但在此之前,我们先了解一下这些RAG框架究竟有何帮助。
RAG 框架的作用是什么?
检索增强生成 (RAG)框架是一种先进的AI架构,旨在通过将外部信息整合到回复生成过程中,来提升LLMs的能力。这使得LLM的回复比其初始训练数据更具信息量或更具时效性。
该模型可以从外部数据库或知识库(APIs)中检索相关文档或数据。然后,它可以使用这些信息来生成基于用户查询的回复,而不是仅仅依赖于原始训练模型中的数据。
这使得模型能够处理问题并给出既正确又对时间或上下文敏感的答案。同时,它们还可以缓解与知识截断 (knowledge cut-off) 和幻觉 (hallucination) (即对提示给出不正确回复) 相关的问题。通过连接到通用和领域特定的知识源,RAG使AI系统能够提供负责任、值得信赖的回复。
RAG的应用跨越了各种用例,例如客户支持、搜索、合规性、数据分析等等。RAG系统也消除了频繁重新训练模型或试图通过训练模型来服务于单个用户回复的必要性。
RAG 系统仓库
现在我们了解了RAG系统如何提供帮助,接下来让我们探索提供详细教程、代码和资源的顶级GitHub仓库,以助你掌握RAG系统。这些GitHub仓库将帮助你精通使用RAG系统所需的工具、技能、框架和理论。
1. LangChain
LangChain是一个完整的LLM工具包,使开发者能够创建具有提示、记忆、智能体和数据连接器等功能的复杂应用。从加载文档到文本分割、嵌入和检索,再到生成输出,LangChain为RAG管道的每一步都提供了模块。
★ https://github.com/langchain-ai
LangChain拥有丰富的生态系统,集成了OpenAI、Hugging Face、Azure等众多提供商。它还支持多种语言,包括Python、JavaScript和TypeScript。LangChain采用分步流程设计,允许你混合搭配工具、构建智能体工作流,并使用内置的链 (chains)。
LangChain的核心功能集包括一个工具链系统、丰富的提示模板,以及对智能体 (agents)和记忆 (memory)的一流支持。
- LangChain是开源的 (MIT license) 且拥有庞大的社区 (70K+ GitHub stars)。
- 组件:提示模板、LLM封装器 (wrappers)、向量存储连接器 (vectorstore connectors)、智能体 (工具 + 推理)、记忆等。
- 集成:LangChain支持许多LLM提供商 (OpenAI、Azure、本地LLMs)、嵌入模型和向量存储 (FAISS、Pinecone、Chroma等)。
- 用例:定制聊天机器人、文档问答 (document QA)、多步工作流、RAG和智能体任务 (agentic tasks)。
使用示例
LangChain的高级APIs使简单的RAG管道非常简洁。例如,这里我们使用LangChain和OpenAI的嵌入及LLM来回答一个关于一小组文档的问题:
from langchain.embeddings import OpenAIEmbeddingsfrom langchain.vectorstores import FAISSfrom langchain.llms import OpenAIfrom langchain.chains import RetrievalQA# Sample documents to indexdocs = ["RAG stands for retrieval-augmented generation.", "It combines search and LLMs for better answers."]# 1. Create embeddings and vector storevectorstore = FAISS.from_texts(docs, OpenAIEmbeddings())# 2. Build a QA chain (LLM + retriever)qa = RetrievalQA.from_chain_type( llm=OpenAI(model_name="text-davinci-003"), retriever=vectorstore.as_retriever())# 3. Run the queryresult = qa({"query": "What does RAG mean?"})print(result["result"])此代码获取docs并使用OpenAI嵌入将其加载到FAISS向量存储中。然后,它使用RetrievalQA提取相关上下文并生成答案。LangChain抽象了检索和LLM调用。
2. Haystack by deepset-ai
Haystack,由deepset开发,是一个专为企业设计的RAG框架,围绕可组合的管道 (composable pipelines)构建。其核心思想是构建一个类似图的管道,在其中你将检索器、阅读器和生成器等节点 (nodes)连接成一个有向图。Haystack专为在生产环境 (prod) 中部署而设计,并为文档存储和检索提供了多种后端选择,如Elasticsearch、OpenSearch、Milvus、Qdrant等。
它同时提供基于关键词 (BM25)和密集检索 (dense retrieval),并且很容易接入开源阅读器 (Transformers QA models) 或生成式答案生成器。
- 它是开源的 (Apache 2.0) 且非常成熟 (10K+ stars)。
- 架构:以管道为中心且模块化。节点可以精确地插入和替换。
- 组件包括:文档存储 (Elasticsearch、In-Memory等)、检索器 (BM25、Dense)、阅读器 (e.g., Hugging Face QA models),以及生成器 (OpenAI、本地LLMs)。
- 易于扩展:分布式设置 (Elasticsearch clusters)、GPU支持、REST APIs和Docker。
- 可能的用例包括:用于搜索的RAG、文档问答、回顾应用和监控用户查询。
使用示例
以下是一个使用Haystack现代API**(v2)** 创建小型RAG管道的简化示例:
from haystack.document_stores import InMemoryDocumentStorefrom haystack.nodes import BM25Retriever, OpenAIAnswerGeneratorfrom haystack.pipelines import Pipeline# 1. Prepare a document storedoc_store = InMemoryDocumentStore()documents = [{"content": "RAG stands for retrieval-augmented generation."}]doc_store.write_documents(documents)# 2. Set up retriever and generatorretriever = BM25Retriever(document_store=doc_store)generator = OpenAIAnswerGenerator(model_name="text-davinci-003")# 3. Build the pipelinepipe = Pipeline()pipe.add_node(component=retriever, name="Retriever", inputs=["Query"]) # 修正了原文的 inputs=[]pipe.add_node(component=generator, name="Generator", inputs=["Retriever"])# 4. Run the RAG queryresult = pipe.run(query="What does RAG mean?")print(result["answers"][0].answer)此代码将一个文档写入内存存储,使用BM25查找相关文本,然后要求OpenAI模型回答。Haystack的Pipeline负责协调整个流程。
★ https://github.com/deepset-ai/haystack
3. LlamaIndex
LlamaIndex,前身为GPT Index,是一个以数据为中心的RAG框架,专注于索引 (indexing)和查询 (querying)你的数据以供LLM使用。可以将LlamaIndex视为一套工具,用于在你提供的文档(向量、关键词索引、图)上构建自定义索引,然后对它们进行查询。LlamaIndex是一种强大的方式,它利用索引结构将文本文件、APIs和SQL等不同数据源连接到LLMs。
例如,你可以为你所有的文件创建一个向量索引,然后使用内置的查询引擎来回答你可能有的任何问题,所有这些都通过LlamaIndex实现。LlamaIndex提供高级APIs和低级模块,能够自定义RAG过程的每个部分。
- LlamaIndex是开源的 (MIT License) 且拥有不断增长的社区 (45K+ stars)。
- 数据连接器:(用于PDFs、文档、网络内容),多种索引类型 (vector store、tree、graph),以及一个支持高效导航的查询引擎。
- 互操作性:只需将其插入LangChain或其他框架即可。LlamaIndex可与任何LLM/Embedding**(OpenAI**、Hugging Face、本地LLMs)配合使用。
- 简化 Agent 构建:LlamaIndex通过自动创建索引并从索引中获取上下文,让你更容易构建自己的RAG agents。
使用示例
LlamaIndex使从文档创建可搜索索引变得非常容易。例如,使用其核心API:
from llama_index import VectorStoreIndex, SimpleDirectoryReader# 1. Load documents (all files in the 'data' directory)documents = SimpleDirectoryReader("./data").load_data()# 2. Build a vector store index from the docsindex = VectorStoreIndex.from_documents(documents)# 3. Create a query engine from the indexquery_engine = index.as_query_engine()# 4. Run a query against the indexresponse = query_engine.query("What does RAG mean?")print(response)此代码将读取./data目录中的文件,在内存中对其进行索引,然后查询该索引。LlamaIndex以字符串形式返回答案。
★ https://github.com/run-llama
4. RAGFlow
RAGFlow是由InfiniFlow设计的RAG引擎,旨在应对复杂和大规模的企业数据。它致力于实现“深度文档理解”的目标,以解析PDFs、扫描文档、图像或表格等不同格式,并将其总结成有组织的块 (chunks)。
RAGFlow具有集成的检索模型,以及用于调试的智能体模板和可视化工具。其关键元素是针对文档的高级模板化分块 (chunking),以及可追溯的引用 (grounded citations)概念。这有助于减少幻觉,因为你可以知道哪些来源文本支持哪个答案。
- RAGFlow是基于(Apache-2.0)开源的 ,拥有强大的社区。
- 亮点:深度文档解析 (deep documents) (即分解表格、图像和多政策文档)、具有模板规则的文档分块 (用于管理文档的自定义规则),以及引用 (显示文档出处以回答问题)。
- 工作流:RAGFlow作为服务使用,这意味着你需要启动一个服务器(使用 Docker),然后通过UI或API索引你的文档。RAGFlow还具有CLI工具和Python/REST APIs用于构建聊天机器人。
- 用例:处理大量文档的大型企业,以及要求代码级可追溯性和准确性的用例。
使用示例
此示例演示了RAGFlow的聊天完成API,该API与OpenAI兼容。它向“default”助手发送一条聊天消息,该助手将使用已索引的文档作为上下文。
import requestsapi_url = "http://localhost:8000/api/v1/chats_openai/default/chat/completions"api_key = "YOUR_RAGFLOW_API_KEY"headers = {"Authorization": f"Bearer {api_key}"}data = { "model": "gpt-4o-mini", "messages": [{"role": "user", "content": "What is RAG?"}], "stream": False}response = requests.post(api_url, headers=headers, json=data)print(response.json()["choices"][0]["message"]["content"])★ https://github.com/infiniflow/ragflow
5. txtai
txtai是一个一体化 (all-in-one)的AI框架,提供语义搜索 (semantic search)、嵌入和RAG管道。它附带一个可嵌入的、可向量搜索的数据库 (源自 SQLite + FAISS),以及允许你编排LLM调用的实用工具。使用txtai,一旦你使用文本数据创建了Embedding index,你可以手动将其与代码中的LLM连接,或使用内置的RAG助手。
我非常喜欢txtai的简单性:它可以100% 本地运行 (无需云),它内置了RAG管道的模板,甚至提供了自动生成的 FastAPI 服务。它也是基于(Apache 2.0)开源的 ,易于原型设计和部署。
- 开源的 **(Apache-2.0, 7K+ stars)**Python包。
- 能力:语义搜索索引 (vector DB)、RAG管道和FastAPI service generation。
- RAG****支持:txtai有一个RAG类,它接受一个Embeddings实例和一个LLM,自动将检索到的上下文粘合到LLM提示中。
- LLM****灵活性:可以使用OpenAI、Hugging Face transformers、llama.cpp或任何带有你自己的LLM接口的模型。
★ https://github.com/neuml/txtai
使用示例
以下是使用内置管道在txtai中运行RAG查询的简单示例:
from txtai import Embeddings, LLM, RAG# 1. Initialize txtai componentsembeddings = Embeddings() # uses a local FAISS+SQLite by defaultembeddings.index([{"id": "doc1", "text": "RAG stands for retrieval-augmented generation."}])llm = LLM("text-davinci-003") # or any model# 2. Create a RAG pipelineprompt = "Answer the question using only the context below.\n\nQuestion: {question}\nContext: {context}"rag = RAG(embeddings, llm, template=prompt)# 3. Run the RAG queryresult = rag("What does RAG mean?", maxlength=512)print(result["answer"])此代码片段接受单个文档并运行RAG管道。RAG助手管理从向量索引中检索相关段落,并填充提示模板中的{context}。它将允许你用良好的结构层、APIs和无代码UI来封装你的RAG管道代码。
6. LLMWare
LLMWare是一个完整的RAG框架,它强烈倾向于更小、更安全、更快速的专业模型推理。大多数框架使用大型云LLM。LLMWare可以在桌面或本地服务器上以必要的计算能力运行桌面RAG管道。它限制了数据暴露的风险,同时仍利用安全的LLMs进行大规模试点研究和各种应用。
LLMWare提供了用于常见RAG功能的无代码向导和模板,包括文档解析和索引功能。它还提供用于各种文档格式 (Office和PDF) 的工具,这些都是认知AI功能进行文档分析的有用第一步。
- 针对企业RAG的开源产品。
- 专注点:一种专注于“更小”LLMs**(例如:Llama 7B** 变体) 的方法,推理在设备上运行,同时即使在ARM设备上也提供RAG功能。
- 工具:提供CLI和REST APIs、交互式UIs和管道模板。
- 独特特性:预配置的管道、内置的事实核查功能,以及用于向量搜索和问答的插件功能。
- 示例:寻求RAG但不能将数据发送到云端的企业,例如金融服务、医疗保健或移动/边缘 AI应用的构建者。
使用示例
LLMWare的API设计得很简单。以下是基于其文档的基本示例:
from llmware.prompts import Promptfrom llmware.models import ModelCatalog# 1. Load a model for promptingprompter = Prompt().load_model("llmware/bling-tiny-llama-v0") # 2. (Optionally) index a document to use as contextprompter.add_source_document("./data", "doc.pdf", query="What is RAG?")# 3. Run the query with contextresponse = prompter.prompt_with_source("What is RAG?")print(response)此代码使用一个LLMWare Prompt对象。我们首先指定一个模型 (例如,来自Hugging Face的一个小型Llama模型)。然后,我们添加一个包含源文档的文件夹。LLMWare将“doc.pdf”解析成块,并根据与用户问题的相关性进行过滤。prompt_with_source函数随后发出请求,传递来自源的相关上下文。这会返回一个文本答案和元数据响应。
★ https://github.com/llmware-ai/llmware
7. Cognita
CognitabyTrueFoundary是一个为可扩展性和协作而构建的、可用于生产的RAG框架。它主要关注如何轻松地从笔记本或实验过渡到部署/服务。它支持增量索引 (incremental indexing),并提供一个Web UI,供非开发者尝试上传文档、选择模型并实时查询。
- 基于Apache-2.0开源协议。
- 架构:完全基于API和容器化 (containerized),可以通过Docker Compose**(包括 UI)** 在本地完全运行。
- 组件:用于解析器、加载器、嵌入器、检索器等的可重用库。一切都可以定制和扩展。
- UI - 扩展性:提供了一个Web frontend用于实验,以及一个“model gateway”来管理LLM/embedder配置。这有助于开发者和分析师共同构建RAG管道组件。
使用示例
Cognita主要通过其命令行接口和内部API进行访问,但这是一个使用其Python API的概念性伪代码片段:
from cognita.pipeline import Pipelinefrom cognita.schema import Document# Initialize a new RAG pipelinepipeline = Pipeline.create("rag")# Add documents (with text content)docs = [Document(id="1", text="RAG stands for retrieval-augmented generation.")]pipeline.index_documents(docs)# Query the pipelineresult = pipeline.query("What does RAG mean?")print(result['answer'])在实际实现中,你会使用YAML来配置Cognita或使用其CLI来加载数据并启动服务。前面的片段描述了流程:你创建一个管道,索引你的数据,然后提出问题。Cognita文档有更多细节。
★ https://github.com/truefoundry/cognita
总结
这些用于RAG系统的开源GitHub仓库为开发者、研究人员和爱好者提供了广泛的工具包。
- LangChain和LlamaIndex提供了灵活的APIs,用于构建定制的管道和索引解决方案。
- Haystack提供了经过生产环境测试的NLP管道,具有数据摄取方面的可扩展性。
- RAGFlow和LLMWare解决了企业需求,其中LLMWare偏向于设备上模型和安全性。
- 相比之下,txtai提供了一个轻量级、简单、一体化的本地RAG解决方案,而Cognita则通过一个简单、模块化、UI驱动的平台来解决一切问题。
所有这些RAG系统的GitHub仓库都得到了维护,并附带了示例,帮助你轻松运行。它们共同表明,RAG不再是学术研究的前沿,而是可供所有想要构建AI应用的人使用的。实际上,“最佳选择”取决于你的需求和优先事项。
想入门 AI 大模型却找不到清晰方向?备考大厂 AI 岗还在四处搜集零散资料?别再浪费时间啦!2025 年AI 大模型全套学习资料已整理完毕,从学习路线到面试真题,从工具教程到行业报告,一站式覆盖你的所有需求,现在全部免费分享!
👇👇扫码免费领取全部内容👇👇
一、学习必备:100+本大模型电子书+26 份行业报告 + 600+ 套技术PPT,帮你看透 AI 趋势
想了解大模型的行业动态、商业落地案例?大模型电子书?这份资料帮你站在 “行业高度” 学 AI:
1. 100+本大模型方向电子书
2. 26 份行业研究报告:覆盖多领域实践与趋势
报告包含阿里、DeepSeek 等权威机构发布的核心内容,涵盖:
- 职业趋势:《AI + 职业趋势报告》《中国 AI 人才粮仓模型解析》;
- 商业落地:《生成式 AI 商业落地白皮书》《AI Agent 应用落地技术白皮书》;
- 领域细分:《AGI 在金融领域的应用报告》《AI GC 实践案例集》;
- 行业监测:《2024 年中国大模型季度监测报告》《2025 年中国技术市场发展趋势》。
3. 600+套技术大会 PPT:听行业大咖讲实战
PPT 整理自 2024-2025 年热门技术大会,包含百度、腾讯、字节等企业的一线实践:
- 安全方向:《端侧大模型的安全建设》《大模型驱动安全升级(腾讯代码安全实践)》;
- 产品与创新:《大模型产品如何创新与创收》《AI 时代的新范式:构建 AI 产品》;
- 多模态与 Agent:《Step-Video 开源模型(视频生成进展)》《Agentic RAG 的现在与未来》;
- 工程落地:《从原型到生产:AgentOps 加速字节 AI 应用落地》《智能代码助手 CodeFuse 的架构设计》。
二、求职必看:大厂 AI 岗面试 “弹药库”,300 + 真题 + 107 道面经直接抱走
想冲字节、腾讯、阿里、蔚来等大厂 AI 岗?这份面试资料帮你提前 “押题”,拒绝临场慌!
1. 107 道大厂面经:覆盖 Prompt、RAG、大模型应用工程师等热门岗位
面经整理自 2021-2025 年真实面试场景,包含 TPlink、字节、腾讯、蔚来、虾皮、中兴、科大讯飞、京东等企业的高频考题,每道题都附带思路解析:
2. 102 道 AI 大模型真题:直击大模型核心考点
针对大模型专属考题,从概念到实践全面覆盖,帮你理清底层逻辑:
3. 97 道 LLMs 真题:聚焦大型语言模型高频问题
专门拆解 LLMs 的核心痛点与解决方案,比如让很多人头疼的 “复读机问题”:
![]()
三、路线必明: AI 大模型学习路线图,1 张图理清核心内容
刚接触 AI 大模型,不知道该从哪学起?这份「AI大模型 学习路线图」直接帮你划重点,不用再盲目摸索!
路线图涵盖 5 大核心板块,从基础到进阶层层递进:一步步带你从入门到进阶,从理论到实战。
L1阶段:启航篇丨极速破界AI新时代
L1阶段:了解大模型的基础知识,以及大模型在各个行业的应用和分析,学习理解大模型的核心原理、关键技术以及大模型应用场景。
L2阶段:攻坚篇丨RAG开发实战工坊
L2阶段:AI大模型RAG应用开发工程,主要学习RAG检索增强生成:包括Naive RAG、Advanced-RAG以及RAG性能评估,还有GraphRAG在内的多个RAG热门项目的分析。
L3阶段:跃迁篇丨Agent智能体架构设计
L3阶段:大模型Agent应用架构进阶实现,主要学习LangChain、 LIamaIndex框架,也会学习到AutoGPT、 MetaGPT等多Agent系统,打造Agent智能体。
L4阶段:精进篇丨模型微调与私有化部署
L4阶段:大模型的微调和私有化部署,更加深入的探讨Transformer架构,学习大模型的微调技术,利用DeepSpeed、Lamam Factory等工具快速进行模型微调,并通过Ollama、vLLM等推理部署框架,实现模型的快速部署。
L5阶段:专题集丨特训篇 【录播课】
![]()
四、资料领取:全套内容免费抱走,学 AI 不用再找第二份
不管你是 0 基础想入门 AI 大模型,还是有基础想冲刺大厂、了解行业趋势,这份资料都能满足你!
现在只需按照提示操作,就能免费领取:
👇👇扫码免费领取全部内容👇👇
2025 年想抓住 AI 大模型的风口?别犹豫,这份免费资料就是你的 “起跑线”!