RAG已於2025年成為一種流行的技術,它避免了型號既昂貴又耗時的模型進行微調。在當前情況下,對抹布框架的需求增加了,讓我們了解這些是什麼。檢索增強的生成(RAG)框架是人工智能領域的重要工具。它們通過允許他們從外部來源檢索相關信息來增強大語模型(LLMS)的功能。這會導致更準確和上下文感知的響應。在這裡,我們將探索五個著名的抹布框架:Langchain,Llamaindex,Langgraph,Haystack和Ragflow。每個框架都提供可以改善您的AI項目的獨特功能。
目錄
- Langchain
- Llamaindex
- Langgraph
- 草垛
- 破布
- 結論
1。蘭班
Langchain是一個靈活的框架,可簡化使用LLMS的應用程序的開發。它提供了構建抹布應用程序的工具,使集成直接。
-
關鍵功能:
- 模塊化設計,以便於自定義。
- 支持各種LLM和數據源。
- 內置工具用於記錄檢索和處理。
- 適用於聊天機器人和虛擬助手。
這是動手:
安裝以下庫
呢pip安裝langchain_community tiktoken langchain-openai langchainhub chromadb langchain
設置OpenAI API鍵和操作系統環境
從GetPass Import GetPass OpenAi = getPass(“ OpenAi API鍵:”) 導入操作系統 os.environ [“ openai_api_key”] = OpenAi
導入以下依賴關係
導入BS4 來自蘭鏈進口樞紐 來自langchain.text_splitter導入recursivecharactertextsplitter 來自langchain_community.document_loaders導入webbaseloader 來自langchain_community.vectorstores導入色度 來自langchain_core.output_parsers import stroutputparser 來自langchain_core.runnables導入RunnablePassThrough 來自langchain_openai進口chatopenai,openaiembeddings
使用Webbase加載器加載文檔(用自己的數據替換)
#加載文檔 loader = webbaseloader( web_paths =(“ https://lilianweng.github.io/posts/2023-06-23-Agent/”,), bs_kwargs = dict( parse_only = bs4.soupstrainer( _ =類 ) ), ) docs = loader.load()
使用Recursivecharactertextsplitter將文檔分解
# 分裂 text_splitter = recursivecharactertextsplitter(chunk_size = 1000,chunk_overlap = 200) splits = text_splitter.split_documents(文檔)
將矢量文檔存儲在Chromadb中
#嵌入 vectorstore = chroma.from_documents(文檔=拆分, 嵌入= openaiembeddings()) retriever = vectorstore.as_retriever()
從Langchain Hub中拉出抹布提示並定義LLM
# 迅速的 提示= hub.pull(“ rlm/rag-prompt”) #llm llm = chatopenai(model_name =“ gpt-3.5-turbo”,溫度= 0)
處理檢索的文檔
#後處理 def格式_docs(文檔): 返回“ \ n \ n”。
創建抹布鏈
# 鏈 rag_chain =( {“ context”:retriever | format_docs,“問題”:RunnablePassThrough()} |迅速的 | LLM | StroutputParser()
援引鏈條
# 問題 rag_chain.invoke(“什麼是任務分解?”)
輸出
'任務分解是一種用於將復雜任務分解成的技術<br> 較小,更簡單的步驟。這種方法可幫助代理商提前計劃和<br> 更有效地處理困難的任務。可以完成任務分解<br> 通過各種方法,包括使用提示技術,特定於任務<br> 指示或人類投入。
另請閱讀:在此處找到有關Langchain的所有內容。
2。 llamaindex
LlamainDex(以前稱為GPT指數)著重於組織和檢索LLM應用程序的數據。它可以幫助開發人員快速訪問和使用大型數據集。
-
關鍵功能:
- 組織數據以進行快速查找。
- 抹布工作流的可自定義組件。
- 支持多種數據格式,包括PDF和SQL。
- 與Pinecone和Faiss等載體商店集成。
這是動手:
安裝以下依賴關係
! ! !
導入以下依賴關係並初始化LLM和嵌入
來自llama_index.llms.openai進口Openai 來自llama_index.embeddings.openai進口openaiembedding llm = OpenAi(型號='gpt-4O') embed_model = openaiembedding() 來自llama_index.core導入設置 settings.llm = llm settings.embed_model = embed_model
下載數據(您可以用數據替換)
!
使用SimpleDirectoryReader讀取數據
來自llama_index.core導入simpledirectoryReader documents = simperedirectoryReader(input_files = [“/content/uber_2021.pdf”])。 load_data()
使用tokentextsplitter將文檔分解
來自llama_index.core.node_parser import tokentextsplitter splitter = tokentextsplitter( chunk_size = 512, chunk_overlap = 0, ) nodes = splitter.get_nodes_from_documents(文檔)
將矢量嵌入在矢量storeIndex中
來自llama_index.core導入vectorstoreindex index = vectorstoreIndex(節點) query_engine = index.as_query_engine(samelity_top_k = 2) 使用抹布調用LLM 響應= query_engine.query(“ 2021年Uber的收入是多少?”) 打印(響應)
輸出
'2021年Uber的收入為1.717億美元。
3。朗格拉夫
Langgraph將LLM與基於圖的數據結構聯繫起來。該框架對於需要復雜數據關係的應用程序很有用。
-
關鍵功能:
- 有效地從圖形結構中檢索數據。
- 將LLMS與圖形數據相結合,以獲得更好的上下文。
- 允許自定義檢索過程。
代碼
安裝以下依賴關係
%pip安裝 - Quiet-升級Langchain-Text-Splitters Langchain-Community Langgraph Langchain-Openai
初始化模型,嵌入和向量數據庫
來自langchain.chat_models導入init_chat_model llm = init_chat_model(“ gpt-4o-mini”,model_provider =“ openai”) 來自langchain_openai進口openaiembeddings 嵌入= openaiembeddings(model =“ text-embedding-3-large”) 從langchain_core.vectorstores導入inmemoryvectorstore vector_store = inmemoryvectorstore(嵌入)
導入以下依賴項
導入BS4 來自蘭鏈進口樞紐 來自langchain_community.document_loaders導入webbaseloader 來自langchain_core.documents導入文檔 來自langchain_text_splitter 從langgraph.graph導入開始,stategraph 從typing_extensions導入列表,TypedDict
使用Webbaseloader下載數據集(用您自己的數據集替換)
#博客的負載和塊內容 loader = webbaseloader( web_paths =(“ https://lilianweng.github.io/posts/2023-06-23-Agent/”,), bs_kwargs = dict( parse_only = bs4.soupstrainer( _ =類 ) ), ) docs = loader.load()
使用Recursivecharactertextsplitter的文檔分組
text_splitter = recursivecharactertextsplitter(chunk_size = 1000,chunk_overlap = 200) all_splits = text_splitter.split_documents(doc) #索引塊 _ = vector_store.add_documents(documents = all_splits)
從Langchain Hub中提取提示
#定義提示提示的提示 提示= hub.pull(“ rlm/rag-prompt”) 定義langgraph中的狀態,節點和邊緣 定義申請狀態 班級狀態(鍵入): 問題:str 上下文:列表[文檔] 答案:str #定義應用程序步驟 def檢索(狀態:狀態): retive_docs = vector_store.simurility_search(state [“ QUADICY”]) 返回{“ context”:retivered_docs} def生成(狀態:狀態): docs_content =“ \ n \ n”。 消息=提示。 響應= llm.invoke(消息) 返回{“答案”:wenspy.content}
編譯圖
#編譯應用程序和測試 graph_builder = stategraph(state).add_seperence([[檢索,生成]) graph_builder.add_edge(開始,“檢索”) 圖= graph_builder.compile()
援引LLM的抹布
響應= graph.invoke({“問題”:“什麼是任務分解?”}) 打印(響應[“答案”])
輸出
任務分解是將復雜的任務分解為<br> 較小,易於管理的步驟。這可以使用鍊等技術來實現<br> 思想(cot)或思想樹,這些思想樹指導模型來推理步驟<br> 逐步或評估多種可能性。目標是簡化複合物<br> 任務並增強對推理過程的理解。
4。 Haystack
Haystack是用於開發由LLMS和Transformer模型提供支持的應用程序的端到端框架。它在文檔搜索和問答中都擅長。
-
關鍵功能:
- 將文檔搜索與LLM功能結合在一起。
- 使用各種檢索方法來最佳結果。
- 為快速開發提供預先建造的管道。
- 與Elasticsearch和OpenSearch兼容。
這是動手:
安裝以下依賴關係
! PIP安裝Haystack-ai ! PIP安裝“數據集> = 2.6.1” ! pip安裝“句子轉換器> = 3.0.0” 導入矢量店並初始化它 來自haystack.document_stores.in_memory導入inmemorydocumentStore document_store = inmemorydocumentStore()
從數據集庫加載內置數據集
從數據集import load_dataset 來自Haystack導入文檔 dataset = load_dataset(“ bilgeyucel/seven七個插圖”,split =“ train”) docs = [document(content = doc [“ content”],元= doc [“ meta”])的doc中的doc]
下載嵌入式模型(您也可以用OpenAI嵌入替換)
來自haystack.components.embedder doc_embedder = sendencetransformersdocumentembedder(model =“句子轉換器/all-minilm-l6-v2”) doc_embedder.warm_up() docs_with_embeddings = doc_embedder.run(docs) document_store.write_documents(docs_with_embeddings [“ documents”])
將嵌入在矢量店中存儲
來自haystack.components.retrievers.in_memory導入inmemoryembeddingriever refierver = inmemoryembeddingriever(document_store)
定義抹布的提示
來自haystack.components.builders導入chatpromptbuilder 來自haystack.dataclasses intim chatmessage 模板= [ chatmessage.from_user( ”“” 鑑於以下信息,請回答問題。 情境: {文檔中的文檔%}%} {{document.content}} {%endfor%} 問題:{{Quartion}} 回答: ”“” ) 這是給出的 提示_builder = chatpromptBuilder(template =模板)
初始化LLM
來自haystack.components.generators.chat導入openaichatgenerator chat_generator = OpenAICHATGENERATOR(Model =“ GPT-4O-Mini”)
定義管道節點
從Haystack Import Pipeline basic_rag_pipeline = pipeline() #將組件添加到您的管道 basic_rag_pipeline.add_component(“ text_embedder”,text_embedder) BASIC_RAG_PIPELINE.ADD_COMPONENT(“ retriever”,retriever) BASIC_RAG_PIPELINE.ADD_COMPONENT(“ strump_builder”,strump_builder) basic_rag_pipeline.add_component(“ llm”,chat_generator)
連接節點
#現在,將組件彼此連接 basic_rag_pipeline.connect(“ text_embedder.embedding”,“ retriever.query_embedding”) basic_rag_pipeline.connect(“ retriever”,“ strump_builder”) basic_rag_pipeline.connect(“ strump_builder.prompt”,“ llm.messages”)
使用抹布調用LLM
問題=“羅德雕像是什麼樣的?” 響應= basic_rag_pipeline.run({“ text_embedder”:{“ text”:question},“ strump_builder”:{“ Question”:Quartion}}) 打印(響應[“ llm”] [“回复”] [0] .Text)
輸出
批次:100%<br><br> 1/1 [00:00 <br> ``羅德巨人的巨像,希臘太陽神鵰像,被認為是<br> 站高約33米(108英尺),建造<br> 鐵領帶和黃銅板形成其皮膚,裡面充滿了石塊。<br> 儘管其外觀的具體細節尚不清楚,但<br> 當代帳戶表明它的頭髮帶有青銅或銀色<br> 尖峰像頭部的火焰一樣輻射。雕像可能描繪了赫利奧斯<br> 以一個強大的指揮姿勢,可能用一隻手遮住他的眼睛,<br> 類似於當時的太陽神的其他代表。總體而言,它<br> 旨在投影力量和光芒,慶祝羅德斯的勝利<br> 在敵人上。
5。破布
破爛的重點是集成檢索和發電過程。它簡化了抹布應用的開發。
-
關鍵功能:
- 簡化了檢索與發電之間的連接。
- 允許量身定制的工作流以滿足項目需求。
- 輕鬆地與各種數據庫和文檔格式集成。
這是動手:
在破布中註冊,然後單擊嘗試破爛
然後單擊創建知識庫
然後轉到模型提供商,然後選擇要使用的LLM模型,我們在此處使用Groq並粘貼其API密鑰。
然後轉到系統模型設置,然後從那裡選擇聊天模型。
現在,轉到數據集並上傳所需的PDF,然後單擊“解析狀態”列附近的播放按鈕,然後等待PDF進行解析。
現在,轉到聊天部分在那裡創建助手,給它一個名字,還選擇您創建的知識庫。
然後創建一個新的聊天,並提出一個問題,它將通過您的知識庫執行抹布並相應地回答。
結論
GRAG近來已成為自定義企業數據集的重要技術,因此,對抹布框架的需求已大大增加。 Langchain,LlamainDex,Langgraph,Haystack和Ragflow等框架在AI應用中取得了重大進步。通過使用這些框架,開發人員可以創建提供準確和相關信息的系統。隨著AI的不斷發展,這些工具將在塑造智能應用程序中發揮重要作用。
以上是AI應用程序的前5個RAG框架的詳細內容。更多資訊請關注PHP中文網其他相關文章!

科學家已經廣泛研究了人類和更簡單的神經網絡(如秀麗隱桿線蟲中的神經網絡),以了解其功能。 但是,出現了一個關鍵問題:我們如何使自己的神經網絡與新穎的AI一起有效地工作

Google的雙子座高級:新的訂閱層即將到來 目前,訪問Gemini Advanced需要$ 19.99/月Google One AI高級計劃。 但是,Android Authority報告暗示了即將發生的變化。 最新的Google P中的代碼

儘管圍繞高級AI功能炒作,但企業AI部署中潛伏的巨大挑戰:數據處理瓶頸。首席執行官慶祝AI的進步時,工程師努力應對緩慢的查詢時間,管道超載,一個

處理文檔不再只是在您的AI項目中打開文件,而是將混亂變成清晰度。諸如PDF,PowerPoints和Word之類的文檔以各種形狀和大小淹沒了我們的工作流程。檢索結構化

利用Google的代理開發套件(ADK)的力量創建具有現實世界功能的智能代理!該教程通過使用ADK來構建對話代理,並支持Gemini和GPT等各種語言模型。 w

摘要: 小型語言模型 (SLM) 專為效率而設計。在資源匱乏、實時性和隱私敏感的環境中,它們比大型語言模型 (LLM) 更勝一籌。 最適合專注型任務,尤其是在領域特異性、控制性和可解釋性比通用知識或創造力更重要的情況下。 SLM 並非 LLMs 的替代品,但在精度、速度和成本效益至關重要時,它們是理想之選。 技術幫助我們用更少的資源取得更多成就。它一直是推動者,而非驅動者。從蒸汽機時代到互聯網泡沫時期,技術的威力在於它幫助我們解決問題的程度。人工智能 (AI) 以及最近的生成式 AI 也不例

利用Google雙子座的力量用於計算機視覺:綜合指南 領先的AI聊天機器人Google Gemini擴展了其功能,超越了對話,以涵蓋強大的計算機視覺功能。 本指南詳細說明瞭如何利用

2025年的AI景觀正在充滿活力,而Google的Gemini 2.0 Flash和Openai的O4-Mini的到來。 這些尖端的車型分開了幾週,具有可比的高級功能和令人印象深刻的基準分數。這個深入的比較


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Linux新版
SublimeText3 Linux最新版

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),