來(lái)源:Coggle數(shù)據(jù)科學(xué)
什么是LlamaIndex ?
LlamaIndex是一個(gè)數(shù)據(jù)框架,用于讓基于LLM的應(yīng)用程序攝取、結(jié)構(gòu)化和訪問(wèn)私有或領(lǐng)域特定的數(shù)據(jù)。它提供Python和Typescript版本。
LLMs提供了人類和數(shù)據(jù)之間的自然語(yǔ)言接口。廣泛可用的模型預(yù)先訓(xùn)練了大量公開可用的數(shù)據(jù),如維基百科、郵件列表、教科書、源代碼等。然而,雖然LLMs在大量數(shù)據(jù)上進(jìn)行了訓(xùn)練,但它們沒(méi)有接觸您的數(shù)據(jù),這可能是私有的或與您要解決的問(wèn)題特定相關(guān)的數(shù)據(jù)。它可能存在于APIs、SQL數(shù)據(jù)庫(kù)中,或者被困在PDF和幻燈片中。
LlamaIndex特點(diǎn)
LlamaIndex采用了一種稱為檢索增強(qiáng)生成(RAG)的不同方法。與要求LLMs立即生成答案不同,LlamaIndex:
先從您的數(shù)據(jù)源中檢索信息,
將其添加到您的問(wèn)題作為上下文,
要求LLMs基于豐富的提示進(jìn)行回答。
RAG克服了微調(diào)方法的所有三個(gè)缺點(diǎn):
由于不涉及訓(xùn)練,因此它是便宜的。
僅在您要求時(shí)才檢索數(shù)據(jù),因此它始終保持最新。
LlamaIndex可以向您展示檢索到的文檔,因此它更可信。
LlamaIndex對(duì)您如何使用LLMs沒(méi)有限制。您仍然可以將LLMs用作自動(dòng)完成、聊天機(jī)器人、半自主代理等(請(qǐng)參見左側(cè)的用例)。它只是使LLMs對(duì)您更有相關(guān)性。
LlamaIndex功能
LlamaIndex提供以下工具:
數(shù)據(jù)連接器從其原生來(lái)源和格式攝取您的現(xiàn)有數(shù)據(jù)。這可以是APIs、PDF、SQL等等。
數(shù)據(jù)索引將您的數(shù)據(jù)結(jié)構(gòu)化為中間表示,LLMs可以輕松高效地使用。
引擎為您的數(shù)據(jù)提供自然語(yǔ)言訪問(wèn)。例如:
查詢引擎是用于知識(shí)增強(qiáng)輸出的強(qiáng)大檢索接口。
聊天引擎是用于與數(shù)據(jù)進(jìn)行多消息、“來(lái)回”交互的對(duì)話接口。
數(shù)據(jù)代理是由工具增強(qiáng)的LLM驅(qū)動(dòng)的知識(shí)工作者,從簡(jiǎn)單的輔助功能到API集成等等。
應(yīng)用集成將LlamaIndex與您的生態(tài)系統(tǒng)的其余部分相連接。這可以是LangChain、Flask、Docker、ChatGPT或… 其他任何東西!
LlamaIndex安裝
pipinstallllama-index
安裝通常所需的可選依賴項(xiàng)的方法。目前,這些依賴項(xiàng)分為三組:
pip install llama-index[local_models]安裝對(duì)私有LLMs、本地推理和HuggingFace模型有用的工具
pip install llama-index[postgres]如果您正在使用Postgres、PGVector或Supabase,則此選項(xiàng)很有用
pip install llama-index[query_tools]為您提供混合搜索、結(jié)構(gòu)化輸出和節(jié)點(diǎn)后處理的工具
檢索增強(qiáng)生成(RAG)
LLMs在龐大的數(shù)據(jù)集上進(jìn)行訓(xùn)練,但它們并沒(méi)有接觸您的數(shù)據(jù)。檢索增強(qiáng)生成(RAG)通過(guò)將您的數(shù)據(jù)添加到LLMs已經(jīng)可以訪問(wèn)的數(shù)據(jù)中來(lái)解決這個(gè)問(wèn)題。在本文檔中,您將經(jīng)??吹綄?duì)RAG的引用。
在RAG中,您的數(shù)據(jù)被加載并準(zhǔn)備進(jìn)行查詢或“索引”。用戶的查詢作用于索引,將您的數(shù)據(jù)篩選到最相關(guān)的上下文。然后,此上下文和您的查詢與LLM一起傳遞給一個(gè)提示,LLM將提供響應(yīng)。
即使您正在構(gòu)建的是一個(gè)聊天機(jī)器人或代理,您也會(huì)想要了解RAG技術(shù),以將數(shù)據(jù)引入您的應(yīng)用程序。

RAG中的階段
RAG中有五個(gè)關(guān)鍵階段,這些階段將成為您構(gòu)建的任何更大應(yīng)用程序的一部分。這些階段是:
加載:這指的是從數(shù)據(jù)所在的地方(無(wú)論是文本文件、PDF、另一個(gè)網(wǎng)站、數(shù)據(jù)庫(kù)還是API)獲取您的數(shù)據(jù),將其引入您的管道。LlamaHub 提供了數(shù)百個(gè)可供選擇的連接器。
索引:這意味著創(chuàng)建一個(gè)允許查詢數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)。對(duì)于LLMs,這幾乎總是意味著生成矢量嵌入,這是您的數(shù)據(jù)意義的數(shù)字表示,以及許多其他元數(shù)據(jù)策略,使其易于準(zhǔn)確找到上下文相關(guān)的數(shù)據(jù)。
存儲(chǔ):一旦您的數(shù)據(jù)被索引,您幾乎總是希望存儲(chǔ)您的索引,以及其他元數(shù)據(jù),以避免必須重新索引它。
查詢:對(duì)于任何給定的索引策略,您可以使用LLMs和LlamaIndex數(shù)據(jù)結(jié)構(gòu)以多種方式進(jìn)行查詢,包括子查詢、多步查詢和混合策略。
評(píng)估:在任何管道中,檢查其相對(duì)于其他策略或在進(jìn)行更改時(shí)的有效性是一個(gè)關(guān)鍵步驟。評(píng)估提供了有關(guān)您對(duì)查詢的響應(yīng)的準(zhǔn)確性、忠實(shí)度和速度的客觀度量。

每個(gè)步驟中的重要概念
在每個(gè)階段中,您還會(huì)遇到一些涉及到這些階段的術(shù)語(yǔ)。
加載階段
節(jié)點(diǎn)和文檔:一個(gè)文檔是圍繞任何數(shù)據(jù)源的容器,例如PDF、API輸出或從數(shù)據(jù)庫(kù)檢索的數(shù)據(jù)。節(jié)點(diǎn)是LlamaIndex中數(shù)據(jù)的原子單位,表示源文檔的“塊”。節(jié)點(diǎn)具有將其與所在文檔和其他節(jié)點(diǎn)相關(guān)聯(lián)的元數(shù)據(jù)。
連接器:數(shù)據(jù)連接器(通常稱為讀取器)從不同的數(shù)據(jù)源和數(shù)據(jù)格式中攝取數(shù)據(jù)到文檔和節(jié)點(diǎn)中。
索引階段
索引:一旦攝取了您的數(shù)據(jù),LlamaIndex將幫助您將數(shù)據(jù)索引到易于檢索的結(jié)構(gòu)中。這通常涉及生成矢量嵌入,這些嵌入存儲(chǔ)在一個(gè)稱為矢量存儲(chǔ)的專用數(shù)據(jù)庫(kù)中。索引還可以存儲(chǔ)有關(guān)您的數(shù)據(jù)的各種元數(shù)據(jù)。
嵌入:LLMs生成稱為嵌入的數(shù)據(jù)的數(shù)字表示。在為相關(guān)性過(guò)濾數(shù)據(jù)時(shí),LlamaIndex將查詢轉(zhuǎn)換為嵌入,并且您的矢量存儲(chǔ)將找到數(shù)值上與查詢嵌入相似的數(shù)據(jù)。
查詢階段
檢索器:檢索器定義了在給定查詢時(shí)如何有效地從索引中檢索相關(guān)上下文。您的檢索策略對(duì)于檢索的數(shù)據(jù)的相關(guān)性以及執(zhí)行此操作的效率至關(guān)重要。
路由器:路由器確定將使用哪個(gè)檢索器從知識(shí)庫(kù)中檢索相關(guān)上下文。更具體地說(shuō),RouterRetriever類負(fù)責(zé)選擇一個(gè)或多個(gè)候選檢索器來(lái)執(zhí)行查詢。它們使用選擇器根據(jù)每個(gè)候選的元數(shù)據(jù)和查詢選擇最佳選項(xiàng)。
節(jié)點(diǎn)后處理器:節(jié)點(diǎn)后處理器接收一組檢索到的節(jié)點(diǎn)并對(duì)其應(yīng)用變換、過(guò)濾或重新排序邏輯。
響應(yīng)合成器:響應(yīng)合成器使用用戶查詢和一組檢索到的文本塊從LLM生成響應(yīng)。
將所有內(nèi)容整合在一起
有無(wú)數(shù)數(shù)據(jù)支持的LLM應(yīng)用程序的用例,但它們大致可以分為三類:
查詢引擎:查詢引擎是一個(gè)端到端的管道,允許您在數(shù)據(jù)上提問(wèn)。它接收自然語(yǔ)言查詢,并返回一個(gè)響應(yīng),以及檢索到的并傳遞給LLM的參考上下文。
聊天引擎:聊天引擎是一個(gè)端到端的管道,用于與您的數(shù)據(jù)進(jìn)行對(duì)話(而不是單一的問(wèn)答)。
代理:代理是由LLM驅(qū)動(dòng)的自動(dòng)決策者,通過(guò)一組工具與世界互動(dòng)。代理可以采取任意數(shù)量的步驟來(lái)完成給定任務(wù),動(dòng)態(tài)決定最佳行動(dòng)方案,而不是按照預(yù)先確定的步驟進(jìn)行。這使得它具有處理更復(fù)雜任務(wù)的額外靈活性。
審核編輯:湯梓紅
-
接口
+關(guān)注
關(guān)注
33文章
9442瀏覽量
156089 -
SQL
+關(guān)注
關(guān)注
1文章
789瀏覽量
46343 -
數(shù)據(jù)庫(kù)
+關(guān)注
關(guān)注
7文章
3992瀏覽量
67709 -
自然語(yǔ)言
+關(guān)注
關(guān)注
1文章
292瀏覽量
13914 -
LLM
+關(guān)注
關(guān)注
1文章
340瀏覽量
1256
原文標(biāo)題:小白學(xué)大模型:LlamaIndex數(shù)據(jù)框架
文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
利用OpenVINO和LlamaIndex工具構(gòu)建多模態(tài)RAG應(yīng)用
使用 llm-agent-rag-llamaindex 筆記本時(shí)收到的 NPU 錯(cuò)誤怎么解決?
多功能程序框架
主流web前端技術(shù)框架
power_supply框架包括哪些功能?
WCDB移動(dòng)數(shù)據(jù)框架的功能
基于功能體驗(yàn)ios新增了SiriKit框架
什么是Hibernate?Hibernate框架架構(gòu)與框架原理分析
大數(shù)據(jù)具有哪些特點(diǎn)優(yōu)勢(shì)和應(yīng)用功能
AD7616產(chǎn)品數(shù)據(jù)手冊(cè)及功能框架圖
DB4494_無(wú)線工業(yè)節(jié)點(diǎn)上的多傳感器AI數(shù)據(jù)監(jiān)控框架,STM32Cube的功能包
LlamaIndex:面向QA系統(tǒng)的全新文檔摘要索引
fastapi框架原理及應(yīng)用
使用OpenVINO和LlamaIndex構(gòu)建Agentic-RAG系統(tǒng)

什么是LlamaIndex?LlamaIndex數(shù)據(jù)框架的特點(diǎn)和功能
評(píng)論