精品一区二区三区在线成人,欧美精产国品一二三区,Ji大巴进入女人66h,亚洲春色在线视频

開發(fā)者的LlamaIndex入門指南 原創(chuàng)

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

LlamaIndex是一個專注于檢索增強生成(RAG)的工具,可以協(xié)助您豐富大模型的數(shù)據(jù)提示。本文將用實例向您展示和介紹。

眾所周知,GPT(General Pretrained Transformer)為我們描述了一套通過各種矩陣乘法,實現(xiàn)輸入、轉(zhuǎn)換和輸出的循環(huán)。其中的單詞(實際上是文本、聲音或圖像的令牌)會被轉(zhuǎn)換為具有足夠維度的矢量,從而表達內(nèi)在意義。如下圖所示,為了確保被傳入的上下文是可以計算的,我們需要注意其臨近的動詞,并通過更多的矩陣乘法塊,來移動向量,進而更接近其上下文的真正含義(例如,“黑洞”就不僅僅是一個黑暗的洞穴的含義)。

開發(fā)者的LlamaIndex入門指南-AI.x社區(qū)

不過,GPT產(chǎn)品的瓶頸在于:其對于下一個詞的猜測,頂多只能和輸入文本語料庫的水平相當。而如果我們需要向ChatGPT詢問那些它尚未學習過的文本時,鑒于輸入窗口的限制,我們無法將大量文本一次性塞入查詢中。而此時,我們就需要用RAG來對提示進行“豐富”。

如果您使用過矢量數(shù)據(jù)庫,那么一定聽說過RAG,它是檢索增強生成(Retrieval Augmented Generation)的縮寫,是一種在無需重新訓練的情況下,將新數(shù)據(jù)引入大語言模型(LLM)的方法。而LlamaIndex(https://docs.llamaindex.ai/en/stable/)則是一個專注于檢索的工具,可被用來協(xié)助您“豐富”數(shù)據(jù)的提示。

開始使用LlamaIndex

如果您想直接上手LlamaIndex,其快速的開始鏈接--https://docs.llamaindex.ai/en/stable/getting_started/installation/,給出了“5行代碼”入手法。

在Mac上,我選擇使用Visual Studio Code來安裝并運行Python 3。為此,我會打開一個Warp終端,并輸入如下命令:

>brew install python3

完成后,我們可以通過如下截圖予以確認:

開發(fā)者的LlamaIndex入門指南-AI.x社區(qū)

接著,我會在該空文件夾中啟動Visual Studio 。在安裝了Python擴展后,我使用Python來創(chuàng)建環(huán)境,即:從命令面板(Palette)中創(chuàng)建了一個特定于項目的虛擬環(huán)境。然后,我選擇了Venv,并最后確認了自己正在使用的是剛剛安裝好的Python:

開發(fā)者的LlamaIndex入門指南-AI.x社區(qū)

根據(jù)LlamaIndex的說明,我們需要在Visual Studio Code的虛擬環(huán)境中,使用pip安裝lama-index包(注意,是在活動終端而非Warp中):

開發(fā)者的LlamaIndex入門指南-AI.x社區(qū)

開發(fā)者的LlamaIndex入門指南-AI.x社區(qū)

下面,我需要向環(huán)境出示自己的OpenAI密鑰。鑒于在IDE下運行的虛擬環(huán)境的特性,我們將其粘貼在Visual Studio Code運行項目所制作的launch.json文件中,是最安全的(當然,您可能需要創(chuàng)建一個OpenAI帳戶。):

.. 
"configurations": 
[ 
{ 
"name": "Python Debugger: Current File", 
"type": "debugpy",
"request": "launch", 
"program": "${file}", 
"console": "integratedTerminal", 
"env": 
{  
"OPENAI_API_KEY": "XXXX" 
} 
} 
] 
..

按照LlamaIndex開始教程中的建議,我從鏈接--https://raw.githubusercontent.com/run-llama/llama_index/main/docs/docs/examples/data/paul_graham/paul_graham_essay.txt下載并放置了一個名為data的文件夾,其中包含了一本冗長的傳記。

在Visual Studio代碼中,我創(chuàng)建了一個starter.py文件,其內(nèi)容如下:

from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
documents = SimpleDirectoryReader("data").load_data() 
index = VectorStoreIndex.from_documents(documents) 

query_engine = index.as_query_engine() 
response = query_engine.query("What did the author do growing up?") 
print(response)

可見,就算您對Python并無深入的了解,也能依靠llama_index軟件包構(gòu)建出大部分代碼。下面展示的是它對于查詢的回復:

開發(fā)者的LlamaIndex入門指南-AI.x社區(qū)

為了確認我確實調(diào)用了OpenAI,以下便是我?guī)艋顒拥慕y(tǒng)計數(shù)據(jù):

開發(fā)者的LlamaIndex入門指南-AI.x社區(qū)

那么,這段代碼到底能做什么呢?它會將新的文本嵌入到矢量存儲中,并通過調(diào)用VectorStoreIndex以便在查詢時提供檢索,并在調(diào)用進入GPT-3.5之前,以英語形式添加到上下文的窗口中。這便是我在前文中提到的對提示進行“豐富”的實踐。

通過添加兩行日志代碼,我既能夠提取大量密集的REST調(diào)用,也可以從llama_index包中提取如下實用的提示:

DEBUG:llama_index.core.indices.utils:> Top 2 nodes: 
> [Node 167d0eb4-7dba-4b93-85ec-3f5779b32daa] [Similarity score: 0.819982] 
"What I Worked On February 2021 Before college the two main things 
I worked on, outside of school..." 

> [Node ee847bc2-d56a-4c26-afd7-c4bee9a3d116] [Similarity score: 0.811733] 
"I remember taking the boys to the coast on a sunny day in 2015 and 
figuring out how to deal with ..."

據(jù)此,我們可以了解到其后臺發(fā)生的調(diào)用與變化了。

在完成之前,我會在data文件夾中添加另一個文檔:莎士比亞的《十四行詩》。雖然我無法保障LLM已經(jīng)有所“知曉”,但是顯然這一堆詩并不會構(gòu)成具有實際意義的敘事。

開發(fā)者的LlamaIndex入門指南-AI.x社區(qū)

據(jù)此,我將使用一個故意模糊的問題,來運行如下額外的查詢:

.. 
response = query_engine.query("Who is Blessed?") 
print(response)

就此,我得到的簡短回答是:

Adonis is Blessed.

是不是非常有趣?在后臺,llama_index包“捕獲”的是這十四行詩中提到Adonis的如下區(qū)域:

“你是被祝福的,你的價值給了你機會,你必須勝利,雖然缺乏希望。你的本質(zhì)是什么?你是由什么構(gòu)成的?既然每個人都有自己的影子,而你也有自己的那個。不過,每個影子都能借來指代Adonis和其贗品,也就是去模仿你。在Helen的臉頰上,所有美麗的藝術(shù),就像你在希臘的輪胎上涂上了新的顏色。雖說是春天,但一年后仍會腐朽。一個是你美麗的影子,另一個則是你的慷慨,你是我們所知道的每一個幸福的該有的形狀。”

就像我們之前看到的日志節(jié)點那樣,我也截獲到了如下節(jié)點信息:

DEBUG:llama_index.core.indices.utils:> Top 2 nodes: 
> [Node 38e29f53-3656-4b55-ab6b-08acf898f122] [Similarity score: 0.766188] 
"Blessed are you whose worthiness gives scope, Being had to triumph, 
being lacked to hope. What i..." 

> [Node 16d55fda-34ac-42cf-9b08-66d2c6944302] [Similarity score: 0.730936] 
"And other strains of woe, which now seem woe, Compared with loss of thee, 
will not seem so. Some..."

可見,其中大部分出自十四行詩的第53節(jié)。“blessed”一詞確實出現(xiàn)在“Adonis”的附近。

當然,對于表現(xiàn)足夠好的LlamaIndex來說,這些都不是問題。我剛剛使用了構(gòu)建管道的第一步,LlamaIndex后續(xù)會為您提供更多的、以這類方式處理文檔的解釋。

小結(jié)

目前,雖然我們?nèi)匀蝗狈σ环N全面的語言來描述模型內(nèi)部發(fā)生的事情,但是通過LlamaIndex使用的RAG不乏一種可靠的途徑。它既可以增強針對特定領(lǐng)域信息的大語言模型,也可以確保處理結(jié)果的可驗證性。而這一切都旨在減少錯誤應答的可能,而這正是當前困擾人工智能的典型問題。

譯者介紹

陳峻(Julian Chen),51CTO社區(qū)編輯,具有十多年的IT項目實施經(jīng)驗,善于對內(nèi)外部資源與風險實施管控,專注傳播網(wǎng)絡與信息安全知識與經(jīng)驗。

原文標題:A Developer’s Guide to Getting Started with LlamaIndex,作者:David Eastman

鏈接:??https://thenewstack.io/a-developers-guide-to-getting-started-with-llamaindex/?。

?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請注明出處,否則將追究法律責任
收藏
回復
舉報
回復
相關(guān)推薦
主站蜘蛛池模板: 大庆市| 定陶县| 茂名市| 合江县| 德保县| 长泰县| 星座| 庆安县| 蒙自县| 黄山市| 塘沽区| 新和县| 紫阳县| 盐山县| 沁阳市| 台山市| 新丰县| 镇江市| 晋城| 桃江县| 余干县| 乐山市| 临西县| 长丰县| 玉环县| 永泰县| 海盐县| 永丰县| 沈阳市| 饶河县| 越西县| 谢通门县| 腾冲县| 兴义市| 汤阴县| 巴彦淖尔市| 张家港市| 东辽县| 信宜市| 海城市| 旌德县|