自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

6行代碼入門(mén)RAG開(kāi)發(fā)

發(fā)布于 2024-5-15 14:08
瀏覽
0收藏

什么是RAG?

檢索增強(qiáng)生成(RAG)是指對(duì)大型語(yǔ)言模型輸出進(jìn)行優(yōu)化,使其能夠在生成響應(yīng)之前引用訓(xùn)練數(shù)據(jù)來(lái)源之外的權(quán)威知識(shí)庫(kù)。大型語(yǔ)言模型(LLM)用海量數(shù)據(jù)進(jìn)行訓(xùn)練,使用數(shù)十億個(gè)參數(shù)為回答問(wèn)題、翻譯語(yǔ)言和完成句子等任務(wù)生成原始輸出。在 LLM 本就強(qiáng)大的功能基礎(chǔ)上,RAG 將其擴(kuò)展為能訪(fǎng)問(wèn)特定領(lǐng)域或組織的內(nèi)部知識(shí)庫(kù),所有這些都無(wú)需重新訓(xùn)練模型。這是一種經(jīng)濟(jì)高效地改進(jìn) LLM 輸出的方法,讓它在各種情境下都能保持相關(guān)性、準(zhǔn)確性和實(shí)用性。

更多關(guān)于RAG的介紹可以看這篇文章:

什么是RAG(檢索增強(qiáng)生成)?

上代碼

# 導(dǎo)入必要的類(lèi)
from llama_index.core import SimpleDirectoryReader
from llama_index.core import VectorStoreIndex
# 加載文檔
documents = SimpleDirectoryReader("./data").load_data()
# 創(chuàng)建文檔索引
index = VectorStoreIndex.from_documents(documents)
# 創(chuàng)建聊天引擎
chat_engine = index.as_chat_engine(chat_mode="condense_question", verbose=True)
# 執(zhí)行聊天
print(chat_engine.chat("DuckDB的VSS擴(kuò)展主要功能, reply in Chinese"))

6行代碼入門(mén)RAG開(kāi)發(fā)-AI.x社區(qū)

6行代碼入門(mén)RAG

輸出效果可還滿(mǎn)意?這里使用的是 LiteLLM+ollama? 的私有化模型來(lái)模擬 OpenAI的,詳情下次介紹。

上面的代碼演示使用的是Vector Similarity Search in DuckDB 的英文原文。

代碼解析

1.安裝必要的包:

pip install llama-index

2.導(dǎo)入必要的類(lèi):

from llama_index.core import SimpleDirectoryReader
from llama_index.core import VectorStoreIndex
  • ?SimpleDirectoryReader:用于從指定目錄加載文檔的類(lèi)。
  • ?VectorStoreIndex:用于創(chuàng)建文檔索引的類(lèi),它允許基于文檔內(nèi)容進(jìn)行檢索。

3.加載文檔:

documents = SimpleDirectoryReader("./data").load_data()

? 使用SimpleDirectoryReader類(lèi)從當(dāng)前目錄下的./data文件夾加載文檔。load_data()方法將文檔加載為一個(gè)列表。

4.創(chuàng)建文檔索引:

index = VectorStoreIndex.from_documents(documents)

? 利用VectorStoreIndex類(lèi)和加載的文檔列表創(chuàng)建一個(gè)索引。這個(gè)索引將用于后續(xù)的檢索和生成回答。

5.創(chuàng)建聊天引擎:

chat_engine = index.as_chat_engine(chat_mode="condense_question", verbose=True)

? 使用index.as_chat_engine()方法創(chuàng)建一個(gè)聊天引擎,它將使用索引來(lái)生成回答。

?chat_mode="condense_question"參數(shù)指定了聊天引擎的模式,在這個(gè)例子中,它將嘗試將用戶(hù)的問(wèn)題壓縮成更簡(jiǎn)潔的形式。

?verbose=True參數(shù)表示在生成回答的過(guò)程中將打印出額外的詳細(xì)信息。

  1. 6.執(zhí)行聊天:
print(chat_engine.chat("DuckDB的VSS擴(kuò)展主要功能, reply in Chinese"))

? 使用chat_engine.chat()方法執(zhí)行一次聊天交互。

llamaindex 簡(jiǎn)介

LlamaIndex[1] 是一個(gè)用于構(gòu)建 上下文增強(qiáng)型 大型語(yǔ)言模型(LLM)應(yīng)用程序的框架。上下文增強(qiáng)指的是任何在您的私有或特定領(lǐng)域數(shù)據(jù)之上應(yīng)用 LLM 的用例。用例包括:

? 提示(Prompting)

? 問(wèn)答(Question-Answering (RAG))

? 聊天機(jī)器人(Chatbots)

? 結(jié)構(gòu)化數(shù)據(jù)抽?。⊿tructured Data Extraction)

? 代理(Agents)

? 多模態(tài)應(yīng)用(Multi-Modal Applications)

? 微調(diào)(Fine-Tuning)

LlamaIndex 提供了工具,使您能夠?qū)⑸鲜鋈魏斡美龔脑蜆?gòu)建到生產(chǎn)。這些工具允許您同時(shí)攝?。ㄌ幚恚┻@些數(shù)據(jù),并實(shí)現(xiàn)復(fù)雜的查詢(xún)工作流程,結(jié)合數(shù)據(jù)訪(fǎng)問(wèn)與 LLM 提示。

LlamaIndex 支持 Python 和 Typescript。

6行代碼入門(mén)RAG開(kāi)發(fā)-AI.x社區(qū)

LlamaIndex

RAG 步驟拆解

6行代碼入門(mén)RAG開(kāi)發(fā)-AI.x社區(qū)

一個(gè)最基本的 RAG 可以分解為如下5步:

1.查詢(xún)向量化:將用戶(hù)查詢(xún)輸入嵌入模型,將自然語(yǔ)言查詢(xún)轉(zhuǎn)換成一個(gè)語(yǔ)義化的嵌入向量,以便于進(jìn)行后續(xù)的數(shù)學(xué)運(yùn)算和相似性比較。

2.向量數(shù)據(jù)庫(kù)查詢(xún):將得到的嵌入查詢(xún)向量輸入到向量數(shù)據(jù)庫(kù)中,以便進(jìn)行高效的信息檢索。

3.上下文檢索:在知識(shí)庫(kù)中檢索與查詢(xún)向量距離最近的前k個(gè)上下文塊。這些上下文塊與查詢(xún)?cè)谡Z(yǔ)義上最為相關(guān),它們將作為生成答案的依據(jù)。

4.上下文與查詢(xún)傳遞:將原始查詢(xún)文本和檢索到的相關(guān)上下文文本一起輸入到大型語(yǔ)言模型(LLM)中。

5.生成響應(yīng):利用LLM的強(qiáng)大生成能力,結(jié)合查詢(xún)文本和檢索到的上下文,生成一個(gè)準(zhǔn)確、連貫且信息豐富的響應(yīng)。

通過(guò)這五個(gè)步驟,RAG技術(shù)能夠有效地結(jié)合檢索和生成兩個(gè)環(huán)節(jié),以提供更加精準(zhǔn)和豐富的信息回答。

引用鏈接

[1] LlamaIndex: https://www.llamaindex.ai/

收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦