搜尋
首頁科技週邊人工智慧AI應用程序的前5個RAG框架

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。破布

破爛的重點是集成檢索和發電過程。它簡化了抹布應用的開發。

  • 關鍵功能
    • 簡化了檢索與發電之間的連接。
    • 允許量身定制的工作流以滿足項目需求。
    • 輕鬆地與各種數據庫和文檔格式集成。

這是動手:

在破布中註冊,然後單擊嘗試破爛

AI應用程序的前5個RAG框架

然後單擊創建知識庫

AI應用程序的前5個RAG框架

然後轉到模型提供商,然後選擇要使用的LLM模型,我們在此處使用Groq並粘貼其API密鑰。

然後轉到系統模型設置,然後從那裡選擇聊天模型。

AI應用程序的前5個RAG框架

現在,轉到數據集並上傳所需的PDF,然後單擊“解析狀態”列附近的播放按鈕,然後等待PDF進行解析。

AI應用程序的前5個RAG框架

現在,轉到聊天部分在那裡創建助手,給它一個名字,還選擇您創建的知識庫。

AI應用程序的前5個RAG框架

然後創建一個新的聊天,並提出一個問題,它將通過您的知識庫執行抹布並相應地回答。

AI應用程序的前5個RAG框架

結論

GRAG近來已成為自定義企業數據集的重要技術,因此,對抹布框架的需求已大大增加。 Langchain,LlamainDex,Langgraph,Haystack和Ragflow等框架在AI應用中取得了重大進步。通過使用這些框架,開發人員可以創建提供準確和相關信息的系統。隨著AI的不斷發展,這些工具將在塑造智能應用程序中發揮重要作用。

以上是AI應用程序的前5個RAG框架的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
讓我們跳舞:結構化運動以微調我們的人類神經網讓我們跳舞:結構化運動以微調我們的人類神經網Apr 27, 2025 am 11:09 AM

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

新的Google洩漏揭示了雙子AI的訂閱更改新的Google洩漏揭示了雙子AI的訂閱更改Apr 27, 2025 am 11:08 AM

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

數據分析加速度如何求解AI的隱藏瓶頸數據分析加速度如何求解AI的隱藏瓶頸Apr 27, 2025 am 11:07 AM

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

Markitdown MCP可以將任何文檔轉換為Markdowns!Markitdown MCP可以將任何文檔轉換為Markdowns!Apr 27, 2025 am 09:47 AM

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

如何使用Google ADK進行建築代理? - 分析Vidhya如何使用Google ADK進行建築代理? - 分析VidhyaApr 27, 2025 am 09:42 AM

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

在LLM上使用SLM進行有效解決問題-Analytics Vidhya在LLM上使用SLM進行有效解決問題-Analytics VidhyaApr 27, 2025 am 09:27 AM

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

如何將Google Gemini模型用於計算機視覺任務? - 分析Vidhya如何將Google Gemini模型用於計算機視覺任務? - 分析VidhyaApr 27, 2025 am 09:26 AM

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

Gemini 2.0 Flash vs O4-Mini:Google可以比OpenAI更好嗎?Gemini 2.0 Flash vs O4-Mini:Google可以比OpenAI更好嗎?Apr 27, 2025 am 09:20 AM

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

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

mPDF

mPDF

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