偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

掌握RAG系統(tǒng)的七個優(yōu)秀GitHub存儲庫

發(fā)布于 2025-10-29 10:31
瀏覽
0收藏

譯者 | 李睿

審校 | 重樓?

檢索增強生成(RAG)的生態(tài)系統(tǒng)在過去幾年中迅速崛起。如今,互聯網上涌現出越來越多幫助開發(fā)人員構建RAG應用程序的開源項目。而RAG是一種通過外部知識源增強大型語言模型(LLM)的有效方法。因此,本文將介紹一些掌握RAG系統(tǒng)的優(yōu)秀GitHub存儲庫。

在詳細介紹之前,首先簡單了解一下RAG及其應用程序。

RAG管道的工作流程如下:

?系統(tǒng)檢索文件或數據;

?檢索對完成用戶提示上下文有幫助或有用的信息;

?系統(tǒng)將這些上下文信息輸入LLM,以生成準確且符合上下文的響應。

如上所述,本文將探討不同的開源RAG框架及其GitHub存儲庫,使用戶能夠輕松構建RAG系統(tǒng)。其目的是幫助開發(fā)人員、學生和技術愛好者選擇適合自己需求的RAG工具包并加以利用。

為什么應該掌握RAG系統(tǒng)

檢索增強生成(RAG)已經迅速成為人工智能領域最具影響力的創(chuàng)新技術之一。隨著企業(yè)越來越注重實施具有上下文感知能力的智能系統(tǒng),掌握RAG將成為必備技能。企業(yè)正利用RAG管道構建聊天機器人、知識助理和企業(yè)自動化工具,以確保其人工智能模型能夠利用實時、特定領域的數據,而不是僅僅依賴于預訓練的知識。

在RAG被用于構建更智能的聊天機器人、企業(yè)助手和自動化工具的時代,深入理解RAG可以讓用戶能夠在人工智能開發(fā)、數據工程和自動化領域獲得巨大的競爭優(yōu)勢。掌握構建和優(yōu)化RAG管道的技能將獲得更多的機遇,并最終提升市場競爭力,讓職業(yè)生涯更具前瞻性。

掌握RAG系統(tǒng)的七個優(yōu)秀GitHub存儲庫-AI.x社區(qū)圖1 RAG的好處

在尋求掌握這些工具和技能的過程中,將介紹如何掌握RAG系統(tǒng)的頂級GitHub存儲庫。但在此之前,需要了解這些RAG框架究竟如何提供幫助。

RAG框架的作用

檢索增強生成(RAG)框架是一種先進的人工智能架構,旨在通過將外部信息集成到響應生成過程中來提高LLM的能力。這使得LLM的響應更加豐富或具有時效性,而不是僅僅依賴于構建語言模型時使用的初始數據。該模型可以從外部數據庫或知識庫(API)中檢索相關文檔或數據,然后根據用戶查詢生成響應,而不是簡單地依賴于最初訓練模型的數據。

掌握RAG系統(tǒng)的七個優(yōu)秀GitHub存儲庫-AI.x社區(qū)圖2 RAG的架構

這使得模型能夠處理問題并生成正確、對時間敏感或與上下文相關的答案。與此同時,它還能緩解知識截斷和模型幻覺(即對提示的錯誤響應)等問題。通過將通用知識與特定領域信息相結合,RAG使人工智能系統(tǒng)能夠提供負責任、可信的響應。

RAG技術的應用場景廣泛,包括客戶支持、搜索、合規(guī)性、數據分析等。此外,RAG系統(tǒng)還顯著降低了對模型進行頻繁重訓練的需求,避免了為滿足特定請求而專門調整模型的成本。

掌握RAG系統(tǒng)的優(yōu)秀存儲庫

既然已經了解RAG系統(tǒng)如何提供幫助,以下將探索一些頂級GitHub存儲庫,這些存儲庫提供了詳細的教程、代碼和資源,幫助人們掌握RAG系統(tǒng)。這些GitHub存儲庫將幫助用戶掌握使用RAG系統(tǒng)所需的工具、技能、框架和理論。

1.LangChain

LangChain是一個完整的LLM工具包,使開發(fā)者能夠創(chuàng)建具有提示、記憶、代理和數據連接器等功能的復雜應用程序。從加載文檔、拆分文本、嵌入和檢索,到生成輸出,LangChain為RAG管道的每個步驟都提供了模塊。

LangChain擁有一個與OpenAI、Hugging Face、Azure等模型提供商集成的豐富生態(tài)系統(tǒng),并支持Python、JavaScript和TypeScript等多種編程語言。LangChain的模塊化架構采用分步流程設計,使用戶能夠靈活組合工具、構建智能代理工作流,并利用豐富的內置鏈式組件快速搭建應用程序。

?LangChain的核心功能包括工具鏈系統(tǒng)、豐富的提示模板,以及對代理和記憶模塊的一流支持。

?LangChain采用開源協(xié)議(MIT許可證),擁有龐大的社區(qū)(GitHu Star超過70000個)。

?組件:提示模板、LLM封裝器、向量庫連接器、代理(工具+推理)、記憶模塊等。

?集成:LangChain支持許多LLM提供商(OpenAI、Azure、本地LLM),嵌入模型和向量存儲(FAISS, 、Pinecone、Chroma等)。

?用例:定制聊天機器人、文檔問答、多步驟工作流程、RAG和代理任務。

使用示例

LangChain的高級API使簡單的RAG管道簡潔明了。例如,在這里使用LangChain來回答一個問題,使用OpenAI的嵌入和LLM的一小部分文檔:

Python

from langchain.embeddings import OpenAIEmbeddings 
from langchain.vectorstores import FAISS 
from langchain.llms import OpenAI 
from langchain.chains import RetrievalQA 
# Sample documents to index 
docs = ["RAG stands for retrieval-augmented generation.", "It combines search and LLMs for better answers."] 
# 1. Create embeddings and vector store 
vectorstore = 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 query 
result = qa({"query": "What does RAG mean?"}) 
print(result["result"])

這段代碼獲取文檔并使用OpenAI嵌入將其加載到FAISS向量存儲中。然后,它使用RetrievalQA獲取相關上下文并生成答案。LangChain抽象了檢索和LLM調用。(有關其他說明請參閱LangChain API和教程。)

有關更多信息可以在此處??查看Langchain的GitHub存儲庫??。

2.deepset-ai的Haystack

Haystack是deepset團隊開發(fā)的一款面向企業(yè)的RAG框架,是圍繞可組合管道構建的。該框架采用圖狀管道設計,允許用戶將檢索器、閱讀器和生成器等功能節(jié)點連接成有向圖結構。Haystack專為prod中的部署而設計,并為文檔存儲和檢索提供了多種后端選擇,例如Elasticsearch、OpenSearch、Milvus、Qdrant等。

?它提供了基于關鍵字的檢索(BM25)和密集檢索功能,并且易于插入開源閱讀器(Transformers QA模型)或生成式答案生成器。

?它是開源的(Apache 2.0許可證),并且非常成熟(GitHub Star超過10000個)。

?架構:以管道為中心且模塊化,節(jié)點可以準確插入和替換。

?組件包括:文檔存儲(Elasticsearch、In-Memory等),檢索器(BM25、Dense),讀取器(例如,Hugging FaceQA模型)和生成器(OpenAI、本地LLM)。

?易于擴展:分布式設置(Elasticsearch集群)、GPU支持、REST API和Docker。

?可能的用例包括:用于搜索的RAG、文檔問答、摘要應用、監(jiān)控用戶查詢。

使用示例

以下是使用Haystack現代API(v2)創(chuàng)建小型RAG管道的簡化示例:

Python

from haystack.document_stores import InMemoryDocumentStore 
from haystack.nodes import BM25Retriever, OpenAIAnswerGenerator 
from haystack.pipelines import Pipeline 
# 1. Prepare a document store 
doc_store = InMemoryDocumentStore() 
documents = [{"content": "RAG stands for retrieval-augmented generation."}] 
doc_store.write_documents(documents) 
# 2. Set up retriever and generator 
retriever = BM25Retriever(document_store=doc_store) 
generator = OpenAIAnswerGenerator(model_name="text-davinci-003") 
# 3. Build the pipeline 
pipe = Pipeline() 
pipe.add_node(compnotallow=retriever, name="Retriever", inputs=[]) 
pipe.add_node(compnotallow=generator, name="Generator", inputs=["Retriever"]) 
# 4. Run the RAG query 
result = pipe.run(query="What does RAG mean?") 
print(result["answers"][0].answer)

這段代碼將一個文檔寫入內存,使用BM25查找相關文本,然后要求OpenAI模型回答。Haystack的Pipeline負責編排流程。有關更多信息可以查看此處的??deepset repository??。

3.LlamaIndex

LlamaIndex(前身為GPT Index)是一個以數據為中心的RAG框架,專注于為LLM使用索引和查詢數據。你可以將LlamaIndex視為一套用于構建文檔自定義索引(向量、關鍵詞索引、圖像)并查詢它們的工具。LlamaIndex 是一種強大的方式,可以使用索引結構將文本文件、API和SQL等不同數據源連接到 LLM。

例如,可以創(chuàng)建所有文件的矢量索引,然后使用內置查詢引擎回答任何問題,這一切都可以通過LlamaIndex實現。LlamaIndex提供了高級API和低級模塊,以便自定義RAG流程的每個部分。

?LlamaIndex是開源的(MIT許可證),擁有不斷壯大的社區(qū)(GitHub Star超過45,000個)。

?數據連接器:(用于PDF、文檔、網頁內容)、多種索引類型(向量存儲、樹、圖)和能夠高效導航的查詢引擎。

?可以輕松插入LangChain或其他框架。LlamaIndex適用于任何大型語言模型/嵌入(OpenAI、Hugging Face、本地LLM)。

?通過自動創(chuàng)建索引,然后從索引中獲取上下文,采用LlamaIndex可以更輕松地構建RAG代理。

使用示例

LlamaIndex使得從文檔創(chuàng)建可搜索索引變得非常簡單。例如,使用核心API:

Python

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 docs 
index = VectorStoreIndex.from_documents(documents) 
# 3. Create a query engine from the index 
query_engine = index.as_query_engine() 
# 4. Run a query against the index 
response = query_engine.query("What does RAG mean?") 
print(response)

這段代碼將讀取./data目錄中的文件,在內存中建立索引,然后查詢該索引LlamaIndex以字符串形式返回答案。有關更多信息,可以查看??Llamindex存儲庫??。

4.RAGFlow

RAGFlow是InfiniFlow團隊為企業(yè)設計的一款RAG引擎,旨在處理復雜和大規(guī)模的數據。其目標是實現“深度文檔理解”,以便解析PDF、掃描文檔、圖像或表格等不同格式,并將它們總結成結構化的知識片段。

RAGFlow具有集成的檢索模型、代理模板和用于調試的可視化工具,其關鍵要素包括基于模板的高級文檔分塊和引用標注概念。這有助于減少幻覺,因為可以知道哪些源文本支持哪些答案。

?RAGFlow是開源的(Apache-2.0許可證),擁有強大的社區(qū)(GitHub Star超過65,000個)。

?亮點:深層文檔的解析(例如,分解圖表、圖像和多策略文檔),使用模板規(guī)則(用于管理文檔的自定義規(guī)則)對文檔進行分塊,以及引用以顯示如何記錄出處以回答問題。

?工作流:RAGFlow作為服務使用,這意味著可以啟動一個服務器(使用Docker),然后通過用戶界面或API索引文檔。RAGFlow 還提供了用于構建聊天機器人的 CLI 工具和 Python/REST API。

?用例:處理大量文檔的大型企業(yè),以及對答案可追溯性和準確性有嚴格要求的用例。

使用示例

Python

import requests 
api_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, jsnotallow=data) 
print(response.json()["choices"][0]["message"]["content"])

這個示例演示了RAGFlow的聊天補全API的使用方式,它與OpenAI兼容。它向“默認”助理發(fā)送聊天消息時,助手將使用索引文檔作為上下文來生成回復。

5.txtai

txtai是一個一體化的人工智能框架,提供語義搜索、嵌入和RAG管道功能。它配備了一個可嵌入的向量搜索數據庫,源自SQLite+FAISS,以及允許編排LLM調用的實用程序。使用txtai,一旦使用文本數據創(chuàng)建了嵌入索引,就應該在代碼中人工將其連接到LLM,或者使用內置的RAG輔助工具。

txtai的真正優(yōu)點在于其簡單性:它可以100%地在本地運行(無需云平臺),它內置了RAG 管道模板,甚至提供了自動生成的FastAPI服務。它也是開源的(Apache 2.0),易于原型設計和部署。

?開源(Apache-2.0許可證,GitHub Star超過7,000個)的Python包。

?功能:語義搜索索引(向量數據庫)、RAG管道和FastAPI服務生成。

?RAG支持:txtai有一個RAG類,它接受一個Embeddings實例和一個LLM,它自動將檢索到的上下文插入到LLM提示中。

?LLM靈活性:使用OpenAI、Hugging Face轉換器、llama.cpp或任何想要的LLM接口模型。

使用示例

以下是使用內置管道在txtai中運行RAG查詢的簡單方法:

Python

from txtai import Embeddings, LLM, RAG 
# 1. Initialize txtai components 
embeddings = Embeddings() # uses a local FAISS+SQLite by default 
embeddings.index([{"id": "doc1", "text": "RAG stands for retrieval-augmented generation."}]) 
llm = LLM("text-davinci-003") # or any model 
# 2. Create a RAG pipeline 
prompt = "Answer the question using only the context below.\n\nQuestion: {question}\nContext: {context}" 
rag = RAG(embeddings, llm, template=prompt) 
# 3. Run the RAG query 
result = rag("What does RAG mean?", maxlength=512) 
print(result["answer"])

這段代碼片段選取了一個文檔并運行了RAG管道。RAG助手從向量索引中管理相關段落的檢索,并填充提示模板中的{context}。它將允許采用良好的結構(包括API和無代碼UI)封裝RAG管道代碼。Cognita確實在底層使用了LangChain/LlamaIndex模塊,但以結構化的方式組織它們:數據加載器、解析器、嵌入器、檢索器和指標模塊。有關更多信息可以查看此處的??存儲庫??。

6. LLMWare

LLMWare是一個完整的RAG框架,其核心理念是推崇使用更輕量、更安全、更快速的專用模型進行推理。與多數依賴大型云端LLM的框架不同,LLMWare旨在本地部署,只需在具備必要計算能力的桌面或服務器上即可流暢運行整套RAG流程。這一設計從源頭上限制了數據外泄風險,使得用戶能夠安全地利用LLM進行大規(guī)模試點研究及多樣化應用。

LLMWare為常見的RAG功能提供了無代碼向導和模板,包括文檔解析和索引功能。它還為各種文檔格式(Office和PDF)提供了工具,這些為認知人工智能功能進行文檔分析奠定了堅實基礎。

?面向企業(yè)RAG的開源產品(Apache-2.0許可證,GitHub Star超過14000個)。

?一種專注于更小的LLM(如Llama 7B變體)的方法,并且推理可以在設備上運行,同時即使在ARM設備上也能提供RAG功能。

?工具:提供CLI和REST API、交互式UI以及管道模板。

?顯著的特點:預先配置的管道,內置的事實檢查功能,用于向量搜索和問答的插件功能。

?示例:追求RAG但無法將數據發(fā)送到云的企業(yè),例如金融服務、醫(yī)療保健或移動/邊緣人工智能應用程序的開發(fā)者。

使用示例

LLMWare的API設計易于使用。以下是基于其文檔的簡單示例:

Python

from llmware.prompts import Prompt 
from llmware.models import ModelCatalog 
# 1. Load a model for prompting 
prompter = Prompt().load_model("llmware/bling-tiny-llama-v0") 
# 2. (Optionally) index a document to use as context 
prompter.add_source_document("./data", "doc.pdf", query="What is RAG?") 
# 3. Run the query with context 
response = prompter.prompt_with_source("What is RAG?") 
print(response)

這段代碼使用了一個LLMWare Prompt對象。首先指定一個模型(例如,來自Hugging Face的小型Llama模型)。然后,添加一個包含源文檔的文件夾。LLMWare將“doc.pdf”解析為片段,并根據與用戶問題的相關性進行過濾。然后,prompt_with_source函數發(fā)出請求,傳遞來自源的相關上下文。這將返回一個文本答案和元數據響應。有關更多信息,請查看此處的??存儲庫??。

7.Cognita

Cognita由TrueFoundary開發(fā),是一個為可擴展性和協(xié)作而構建的生產就緒RAG框架。它主要致力于簡化從筆記本或實驗到部署/服務的過程。它支持增量索引,并具有一個Web UI,供非開發(fā)人員嘗試上傳文檔、選擇模型和實時查詢。

?它是開源的(Apache-2.0許可證)。

?架構:完全基于API和容器化,可以通過Docker Compose(包括用UI)完全在本地運行。

?組件:用于解析器、加載器、嵌入器、檢索器等的可重用庫。所有組件都可以定制和擴展。

?UI-可擴展性:提供了一個用于實驗的 Web 前端和一個用于管理 LLM/嵌入器配置的“模型網關”。當開發(fā)人員和分析師協(xié)作構建RAG管道組件時,這非常有用。

使用示例

Cognita主要通過其命令行界面和內部 API 訪問,但以下是使用其Python API的概念性偽代碼片段:

Python

from cognita.pipeline import Pipeline 
from cognita.schema import Document 
# Initialize a new RAG pipeline 
pipeline = 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 pipeline 
result = pipeline.query("What does RAG mean?") 
print(result['answer'])

在實際應用中,用戶可以使用YAML來配置Cognita框架,或者使用其CLI來加載數據并啟動服務。上述代碼片段清晰地展示了核心操作流程:首先創(chuàng)建數據處理管道,接著構建索引,最后執(zhí)行查詢。Cognita文檔有更多詳細信息。有關更多信息,請查看此處的??存儲庫??。

結論

這些用于RAG系統(tǒng)的開源GitHub存儲庫為開發(fā)人員、研究人員和業(yè)余愛好者提供了豐富的工具包。

?LangChain和LlamaIndex為構建定制管道和索引解決方案提供了靈活的API。

?Haystack提供了經過生產環(huán)境測試的NLP管道,并關注數據攝取的擴展性。

?RAGFlow和LLMWare滿足企業(yè)需求,LLMWare在某種程度上更側重于設備上的模型和安全性。

?相比之下,txtai提供了一個輕量級的、簡單的、一體化的本地RAG解決方案,而Cognita則通過一個簡單的、模塊化的、UI驅動的平臺來處理一切。

上述所有應用于RAG系統(tǒng)的GitHub存儲庫均保持著良好的維護狀態(tài),并且都提供了可直接運行的示例代碼。這些情況充分表明,RAG技術已經超越了學術研究的前沿范疇,如今已具備足夠的成熟度,可以供任何有志于構建人工智能應用的人士直接使用。實際上,究竟哪一個是“最佳選擇”,還需根據用戶的具體需求和優(yōu)先級來綜合判斷。

原文標題:??7 Best GitHub Repositories For Mastering RAG Systems??,作者:Vipin Vashisth

收藏
回復
舉報
回復
相關推薦