0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

利用知識圖譜與Llama-Index技術構建大模型驅動的RAG系統(tǒng)(上)

深度學習自然語言處理 ? 來源:愛吃牛油果的璐璐 ? 2024-02-22 14:07 ? 次閱讀

幻覺是在處理大型語言模型(LLMs)時常見的問題。LLMs生成流暢連貫的文本,但經常產生不準確或不一致的信息。防止LLMs中出現幻覺的一種方法是使用外部知識源,如提供事實信息的數據庫或知識圖譜。

矢量數據庫和知識圖譜使用不同的方法來存儲和表示數據。矢量數據庫適合基于相似性的操作,知識圖譜旨在捕捉和分析復雜的關系和依賴關系。

對于LLM中的幻覺問題,知識圖譜是一個比向量數據庫更好的解決方案。知識圖譜為LLM提供了更準確、相關、多樣化、有趣、邏輯和一致的信息。因此,使用知識圖譜可以減少LLM中的幻覺,使其在生成準確和真實的文本時更加可靠。但關鍵是文檔需要清楚地展示關系,否則知識圖譜將無法捕捉到它。

向量數據庫

向量數據庫是一組高維向量的集合,用于表示實體或概念,例如單詞、短語或文檔。向量數據庫可以根據實體或概念的向量表示來度量它們之間的相似性或關聯性。

舉個例子,向量數據庫可以告訴你“巴黎”和“法國”比“巴黎”和“德國”更相關,基于它們的向量距離。

知識圖譜

知識圖譜是一組節(jié)點和邊,用于表示實體或概念以及它們之間的關系,例如事實、屬性或類別。知識圖譜可以根據節(jié)點和邊的屬性來查詢或推斷不同實體或概念的事實信息。

舉個例子,知識圖譜可以告訴你“巴黎”是“法國”的首都,基于它們的邊標簽。

知識圖譜組件

頂點/節(jié)點:表示知識領域中的實體或對象。每個節(jié)點對應一個唯一的實體,并由唯一的標識符進行標識。例如,在關于Chennai Kings的知識圖譜中,節(jié)點可以具有諸如“Philadelphia Phillies”和“Major League Cricket”這樣的值。

邊:表示兩個節(jié)點之間的關系。例如,一條“compete in”的邊可以將“Chennai Kings”節(jié)點連接到“Major League Cricket”節(jié)點。

知識圖譜中的基本數據單元

三元組是圖中的基本數據單元。它由三個部分組成:

主語:三元組所關于的節(jié)點。

賓語:關系指向的節(jié)點。

謂語:主語和賓語之間的關系。

在以下三元組示例中,“Chennai Kings”是主語,“compete in”是謂語,“Major League Cricket”是賓語。

(Chennai Kings) — [compete in]->(Major League Cricket)

知識圖譜數據庫可以通過存儲三元組來高效地存儲和查詢復雜的圖數據。

查詢圖數據庫

查詢涉及遍歷圖結構并根據特定標準檢索節(jié)點、關系或模式。下面是一個簡單的示例,展示了如何查詢圖數據庫:假設你有一個代表社交網絡的圖數據庫,其中用戶是節(jié)點,而它們的關系(例如友誼)由連接節(jié)點的邊表示。你想要找到給定用戶的朋友圈(共同的連接)。

從參考用戶開始:在圖數據庫中,通過查詢特定的用戶標識符或其他相關標準來識別代表參考用戶的節(jié)點。

遍歷圖:使用圖形查詢語言(如Neo4j中使用的Cypher或Gremlin)從參考用戶節(jié)點遍歷圖。編寫一個查詢,指定要探索的模式或關系。在這種情況下,您想要找到朋友的朋友。示例Cypher查詢:MATCH (:User {userId: ‘referenceUser’})-[:FRIEND]->()-[:FRIEND]->(fof:User) RETURN fof這個查詢從參考用戶開始,沿著FRIEND關系找到另一個節(jié)點(朋友),然后再沿著另一個FRIEND關系找到朋友的朋友(fof)。

檢索結果:在圖數據庫上執(zhí)行查詢,根據查詢模式檢索出相應的節(jié)點(朋友的朋友)。如果需要,還可以獲取檢索到的節(jié)點的特定屬性或附加信息。

呈現結果:將檢索到的朋友的朋友顯示給用戶或按照需求進一步處理數據。這些信息可以用于建議、網絡分析或其他相關目的。

圖數據庫提供了更高級查詢功能,包括過濾、聚合和復雜模式匹配。具體的查詢語言和語法可能有所不同,但總體過程涉及遍歷圖結構以檢索與所需條件匹配的節(jié)點和關系。

查詢向量數據庫

通常涉及搜索相似向量或根據特定條件檢索向量。以下是查詢向量數據庫的簡單示例:假設你有一個包含客戶配置文件的向量數據庫,這些配置文件表示為高維向量,你想找到與給定參考客戶相似的客戶。

定義參考客戶向量:首先,為參考客戶定義一個向量表示。這可以通過提取相關特征或屬性并將它們轉換為向量格式來完成。

執(zhí)行相似性搜索:使用合適的算法,如k-最近鄰(k-NN)或余弦相似度,在向量數據庫中執(zhí)行相似性搜索。該算法將根據相似性分數識別參考客戶向量的最近鄰居。

檢索相似客戶:檢索與上一步中識別的最近鄰居向量對應的客戶配置文件。這些配置文件將根據定義的相似性度量表示與參考客戶相似的客戶。

呈現結果:最后,將檢索到的客戶配置文件或相關信息呈現給用戶,例如顯示他們的名字、人口統(tǒng)計信息或購買歷史。此信息可用于推薦、定向營銷活動或個性化體驗。

知識圖譜的優(yōu)勢

相比于向量數據庫,知識圖譜提供了更精確和具體信息。向量數據庫表示兩個實體或概念之間的相似性或關聯性,而知識圖譜能夠更好地理解它們之間的關系。例如,知識圖譜可以告訴你“埃菲爾鐵塔”是“巴黎”的地標,而向量數據庫只能表示這兩個概念的相似程度。這可以幫助LLM生成更準確和相關的文本。

知識圖譜支持比向量數據庫更多樣化和復雜的查詢。向量數據庫主要基于向量距離、相似度或最近鄰來回答問題,這些僅限于直接相似度測量。相比之下,知識圖譜可以處理基于邏輯運算符(如“具有屬性Z的所有實體是什么?”或“W和V的共同類別是什么?”)的查詢。這可以幫助LLM生成更多樣化和有趣的文本。

知識圖譜比向量數據庫能夠進行更多的推理和推斷。向量數據庫只能提供直接存儲在數據庫中的信息。相比之下,知識圖譜可以從實體或概念之間的關系推導出間接信息。例如,知識圖譜可以根據“巴黎是法國的首都”和“法國位于歐洲”的事實推斷出“埃菲爾鐵塔位于歐洲”。這可以幫助LLM生成更符合邏輯和一致的文本。

LlamaIndex

LlamaIndex是一個編排框架,用于簡化將私有數據與公共數據集成以構建使用大型語言模型(LLMs)的應用程序。它提供了數據攝取、索引和查詢的工具,使其成為生成式AI需求的一種多功能解決方案。

嵌入模型

嵌入模型需要將文本轉換為所提供文本的信息的數字表示形式。該表示形式捕獲了所嵌入內容的語義含義,使其適用于許多行業(yè)應用。在這里,我們使用了“thenlper/gte-large”模型。

LLM

大型語言模型需要根據提供的問題和上下文生成響應。在這里,我們使用了Zephyr 7B beta模型。

代碼實現

1、安裝所有依賴庫

pipinstallllama_indexpyvisIpythonlangchainpypdf

2、設置日志

importlogging
importsys
#
logging.basicConfig(stream=sys.stdout,level=logging.INFO)
logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stdout))

3、導包

fromllama_indeximport(SimpleDirectoryReader,
LLMPredictor,
ServiceContext,
KnowledgeGraphIndex)
#
fromllama_index.graph_storesimportSimpleGraphStore
fromllama_index.storage.storage_contextimportStorageContext
fromllama_index.llmsimportHuggingFaceInferenceAPI
fromlangchain.embeddingsimportHuggingFaceInferenceAPIEmbeddings
fromllama_index.embeddingsimportLangchainEmbedding
frompyvis.networkimportNetwork

SimpleDirectoryReader:用于讀取非結構化數據。
LLMPredictor:用于使用大型語言模型(LLM)生成預測。
ServiceContext:提供協(xié)調各種服務所需的上下文數據。
KnowledgeGraphIndex:用于構建和操作知識圖譜。
SimpleGraphStore:用作存儲圖數據的簡單倉庫。
HuggingFaceInferenceAPI:用于利用開源LLM的模塊。

4、引入LLM

HF_TOKEN='YourHuggaingfaceapikey'
llm=HuggingFaceInferenceAPI(
model_name='HuggingFaceH4/zephyr-7b-beta',token=HF_TOKEN
)

5、引入embedding

embed_model=LangchainEmbedding(
HuggingFaceInferenceAPIEmbeddings(api_key=HF_TOKEN,model_name='thenlper/gte-large')
)

6、裝載數據

documents=SimpleDirectoryReader('/content/Documents').load_data()
print(len(documents))

da999318-cfed-11ee-a297-92fbcf53809c.png

審核編輯:黃飛

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • 數據庫
    +關注

    關注

    7

    文章

    3752

    瀏覽量

    64235
  • 大模型
    +關注

    關注

    2

    文章

    2279

    瀏覽量

    2362

原文標題:借助知識圖譜和Llama-Index實現基于大模型的RAG-上

文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    分享自底向上構建知識圖譜的過程

    一文揭秘!自底向上構建知識圖譜全過程
    發(fā)表于 09-29 14:27

    KGB知識圖譜基于傳統(tǒng)知識工程的突破分析

    知識圖譜本質是一種大規(guī)模的語義網絡。從2012年谷歌提出知識圖譜知識圖譜一直在快速發(fā)展,其應用也不再局限于“語義網絡”范疇。現如今的知識圖譜
    發(fā)表于 10-22 15:25

    KGB知識圖譜技術能夠解決哪些行業(yè)痛點?

    具有有效性。KGB知識圖譜憑借其在知識圖譜構建,更新方面的技術優(yōu)勢,現在已經在公共安全,企業(yè)文件內容核查等得以廣泛應用。KGB知識圖譜現已
    發(fā)表于 10-30 15:34

    知識圖譜的三種特性評析

    都有很高的要求。由此可見,行業(yè)知識庫和數據決策這些場景所建設的知識圖譜的質量水平是有著較高要求的。KGB知識圖譜憑借其在知識圖譜構建,更新
    發(fā)表于 12-13 13:57

    KGB知識圖譜通過智能搜索提升金融行業(yè)分析能力

    的自然語言處理技術,搭建專業(yè)領域深度知識圖譜,快速學習并迭代金融行業(yè)最新知識,構建一二級市場眾多實體模型,智能化的理解用戶的搜索請求,使得搜
    發(fā)表于 06-22 21:23

    如何使用知識圖譜對圖像語義進行分析技術及應用研究

    模型對圖像的機構化語義信息進行描述和抽取,在此基礎研究了基于知識圖譜的圖像語義知識融合和加工技術,構建
    發(fā)表于 11-21 17:05 ?17次下載
    如何使用<b class='flag-5'>知識圖譜</b>對圖像語義進行分析<b class='flag-5'>技術</b>及應用研究

    知識圖譜在工程應用中的關鍵技術、應用及案例

    近年來,知識圖譜及其相關技術得到快速發(fā)展,并被廣泛應用于工業(yè)界各種認知智能場景中。在簡述知識圖譜相關研究的基礎,介紹知識圖譜在工程應用中的
    發(fā)表于 03-30 15:12 ?15次下載
    <b class='flag-5'>知識圖譜</b>在工程應用中的關鍵<b class='flag-5'>技術</b>、應用及案例

    通用知識圖譜構建技術的應用及發(fā)展趨勢

    構建平臺,需要對知識圖譜構建體系進行研究,以滿足不同的行業(yè)應用需求。文中以知識圖譜構建為主線,首先介紹目前主流的通用
    發(fā)表于 04-14 11:37 ?27次下載
    通用<b class='flag-5'>知識圖譜</b><b class='flag-5'>構建</b><b class='flag-5'>技術</b>的應用及發(fā)展趨勢

    知識圖譜Knowledge Graph構建與應用

    一、知識圖譜概論 ? ? ? ? 1.1知識圖譜的起源和歷史 1.2知識圖譜的發(fā)展史——從框架、本體論、語義網、鏈接數據到知識圖譜 1.3知識圖譜
    發(fā)表于 09-17 10:12 ?622次閱讀

    知識圖譜知識圖譜的典型應用

    作者:?cooldream2009? 我們構建知識圖譜的目的,在于利用知識圖譜來做一些事情。有效利用知識
    的頭像 發(fā)表于 10-18 09:26 ?1825次閱讀
    <b class='flag-5'>知識圖譜</b>:<b class='flag-5'>知識圖譜</b>的典型應用

    基于本體的金融知識圖譜自動化構建技術

    本評測任務參考 TAC KBP 中的 Cold Start 評測任務的方案,圍繞金融研報知識圖譜的自動化圖譜構建所展開。評測從預定義圖譜模式(Schema)和少量的種子
    的頭像 發(fā)表于 11-24 14:54 ?1087次閱讀

    如何利用模型構建知識圖譜?如何利用模型操作結構化數據?

    上圖是之前,我基于大語言模型構建知識圖譜的成品圖,主要是將金融相關的股票、人物、漲跌幅之類的基金信息抽取出來。
    的頭像 發(fā)表于 08-24 16:56 ?1.5w次閱讀
    如何<b class='flag-5'>利用</b>大<b class='flag-5'>模型</b><b class='flag-5'>構建</b><b class='flag-5'>知識圖譜</b>?如何<b class='flag-5'>利用</b>大<b class='flag-5'>模型</b>操作結構化數據?

    知識圖譜與大模型結合方法概述

    本文作者 |? 黃巍 《Unifying Large Language Models and Knowledge Graphs: A Roadmap》總結了大語言模型知識圖譜融合的三種路線:1
    的頭像 發(fā)表于 10-29 15:50 ?916次閱讀
    <b class='flag-5'>知識圖譜</b>與大<b class='flag-5'>模型</b>結合方法概述

    利用知識圖譜Llama-Index技術構建模型驅動RAG系統(tǒng)(下)

    對于語言模型(LLM)幻覺,知識圖譜被證明優(yōu)于向量數據庫。知識圖譜提供更準確、多樣化、有趣、邏輯和一致的信息,減少了LLM中出現幻覺的可能性。
    的頭像 發(fā)表于 02-22 14:13 ?1080次閱讀
    <b class='flag-5'>利用</b><b class='flag-5'>知識圖譜</b>與<b class='flag-5'>Llama-Index</b><b class='flag-5'>技術</b><b class='flag-5'>構建</b>大<b class='flag-5'>模型</b><b class='flag-5'>驅動</b>的<b class='flag-5'>RAG</b><b class='flag-5'>系統(tǒng)</b>(下)

    知識圖譜與大模型之間的關系

    在人工智能的廣闊領域中,知識圖譜與大模型是兩個至關重要的概念,它們各自擁有獨特的優(yōu)勢和應用場景,同時又相互補充,共同推動著人工智能技術的發(fā)展。本文將從定義、特點、應用及相互關系等方面深入探討
    的頭像 發(fā)表于 07-10 11:39 ?858次閱讀