現今根據檢索增強生成 (RAG) 的應用程式開發中,資料的收集、整理和結構化往往是最大的挑戰。本文將透過三個主要管道:資料預處理、RAG 驅動系統準備及目標向量應用,逐步建構一個以知識圖譜為基礎的 RAG 應用程式。利用維基百科 API 作為資料來源,結合 LlamaIndex 與 Deep Lake 向量資料函式庫,示範如何有效地擷取、處理和應用知識圖譜中的資訊。過程中,我們將使用 OpenAI 模型進行嵌入和生成,並探討如何透過 Pinecone 持續更新資料,確保系統的效能和可擴充套件性。最後,我們將深入探討知識圖譜的架構、實作細節以及評估指標,以期提供一個完整且實用的知識圖譜應用建構。
管道1:資料預處理
在管道1中,我們簡化了資料集,減少了資料複雜性和儲存成本。透過探索性資料分析(EDA),我們發現客戶投訴和關閉帳戶之間存在強烈的相關性,而K-means聚類別模型進一步驗證了這一發現。
管道2:RAG驅動系統的準備
在管道2中,我們準備了RAG驅動系統,以生成個人化推薦。我們使用OpenAI模型處理資料塊,並將其嵌入到Pinecone索引中。Pinecone的持續更新能力確保了高效的資料處理,無論資料量大小。
管道3:目標向量的應用
在管道3中,我們利用Pinecone中的超過100萬個向量來針對特定市場細分以提供個人化的優惠,旨在提高忠誠度和減少流失。使用GPT-4o,我們增強了查詢以生成令人信服的推薦。
成功應用和改進
我們成功地應用了一個針對關鍵市場細分的目標向量,展示了我們系統建立有效客戶留存策略的潛力。然而,我們可以透過某些方法改進推薦,這些方法將在下一章中實施。
問題和答案
是否使用Kaggle資料集通常涉及下載和處理真實世界的資料進行分析? 是的,使用Kaggle資料集通常涉及下載和處理真實世界的資料進行分析。
Pinecone是否能夠高效地管理大規模向量儲存以供AI應用使用? 是的,Pinecone能夠高效地管理大規模向量儲存以供AI應用使用。
K-means聚類別是否能夠幫助驗證特徵之間的關係,例如客戶投訴和流失之間的關係? 是的,K-means聚類別可以幫助驗證特徵之間的關係,例如客戶投訴和流失之間的關係。
在資料函式庫中利用超過一百萬個向量是否會阻礙個人化客戶互動的能力? 不,利用超過一百萬個向量不一定會阻礙個人化客戶互動的能力。
在商業應用中使用生成式AI的主要目標是否是自動化和改進決策過程? 是的,在商業應用中使用生成式AI的主要目標之一是自動化和改進決策過程。
輕量級開發環境是否對快速原型設計和應用開發有益? 是的,輕量級開發環境對快速原型設計和應用開發有益。
Pinecone的架構是否能夠自動擴充套件以適應增加的資料負載而無需手動干預? 是的,Pinecone的架構能夠自動擴充套件以適應增加的資料負載而無需手動干預。
生成式AI是否通常被用於根據使用者資料建立動態內容和推薦? 是的,生成式AI通常被用於根據使用者資料建立動態內容和推薦。
建立可擴充套件的知識圖根據 RAG 的應用:使用 Wikipedia API 和 LlamaIndex
在實際專案中,資料管理往往比 AI 本身更令人頭痛。專案經理、顧問和開發人員常常苦於取得必要的資料來啟動專案,尤其是根據 RAG 的生成式 AI 應用。資料通常在組織化之前是無結構的,透過痛苦的決策過程變得有序。維基百科是個典型的例子,展示瞭如何擴充套件資料導致了大部分可靠但有時不正確的資訊。
知識圖提供了一種有效的方法來視覺化不同型別資料之間的關係。這一章節首先介紹了生態系統中的三個管道:資料收集、向量儲存填充和根據知識圖索引的 RAG 程式。接下來,我們將構建第一個管道:收集和準備檔案。在這個過程中,我們將使用維基百科 API 建立一個自動化的維基百科檢索程式。只需選擇一個根據維基百科頁面的主題,然後讓程式檢索我們需要收集和準備的後設資料。系統將足夠靈活,允許您選擇任何主題。
定義知識圖
知識圖是一種圖形結構,用於表示不同實體之間的關係和連線。它是一種強大的工具,用於組織和查詢複雜的資料集。知識圖可以用於各種應用,包括問答系統、推薦系統和資料探索。
實作維基百科 API
維基百科 API 提供了一種方便的方式來存取維基百科的內容和後設資料。透過使用 API,我們可以自動化地收集和準備檔案,減少手工操作的需要。以下是使用維基百科 API 的步驟:
- 選擇一個主題:選擇一個根據維基百科頁面的主題。
- 收集後設資料:使用維基百科 API 收集檔案的後設資料,包括標題、內容和類別。
- 準備檔案:使用收集到的後設資料準備檔案,包括摘要和內容。
填充 Deep Lake 向量儲存
Deep Lake 是一個向量儲存解決方案,提供了一種方便的方式來儲存和查詢大型資料集。透過使用 Deep Lake,我們可以自動化地填充向量儲存,並使用 OpenAI 的嵌入功能來生成高品質的向量表示。以下是填充 Deep Lake 向量儲存的步驟:
- 載入資料:載入收集到的檔案到 Deep Lake 向量儲存中。
- 自動化分塊:使用 Deep Lake 的自動化分塊功能來分割大型資料集。
- 生成向量表示:使用 OpenAI 的嵌入功能來生成高品質的向量表示。
建立知識圖索引
LlamaIndex 是一個知識圖索引解決方案,提供了一種方便的方式來建立和查詢知識圖。透過使用 LlamaIndex,我們可以自動化地建立知識圖索引,並使用 OpenAI 的功能來管理使用者輸入和生成回應。以下是建立知識圖索引的步驟:
- 建立索引:使用 LlamaIndex 建立知識圖索引。
- 查詢圖:使用 LlamaIndex 的查詢功能來查詢知識圖。
- 生成回應:使用 OpenAI 的功能來生成回應。
根據知識圖的語言模型架構
在本章中,我們將實作一個根據知識圖的語言模型架構,利用 LlamaIndex 建立一個圖形化的知識圖索引,以便更好地理解和查詢知識圖中的內容。
知識圖架構
首先,我們需要建立一個知識圖架構,以便將知識圖中的內容組織起來。這個架構可以自動建立,使用 LlamaIndex 的功能。然後,我們可以使用這個架構來查詢和顯示知識圖中的內容。
三個管道
為了實作這個架構,我們將實作三個管道:
- 檔案收集和準備:這個管道負責收集和準備知識圖中的檔案,包括從維基百科頁面中收集連結和檔案的摘要、URL 和參照資料。
- Deep Lake 向量儲存:這個管道負責建立和填充 Deep Lake 向量儲存,將收集到的檔案內容嵌入和更新到向量儲存中。
- 知識圖索引根據 RAG:這個管道負責建立知識圖索引,使用 LlamaIndex 的嵌入模型和向量儲存中的內容。然後,我們可以使用這個索引來查詢和顯示知識圖中的內容。
實作細節
在實作這些管道的過程中,我們需要注意以下幾點:
- 使用 LlamaIndex 的功能來建立知識圖索引和查詢內容。
- 使用 Deep Lake 向量儲存來儲存和管理知識圖中的內容。
- 使用維基百科 API 來收集和準備知識圖中的檔案。
- 使用 OpenAI 的嵌入模型來生成知識圖索引中的內容。
結果和評估
最後,我們需要評估這個架構的效能和效果,包括查詢時間、內容相關性和使用者反饋等指標。這些評估結果將有助於我們改進和最佳化這個架構,以便更好地支援知識圖查詢和顯示。
內容解密:
在上述架構中,我們使用 LlamaIndex 和 Deep Lake 向量儲存來建立和查詢知識圖索引。這個架構可以自動建立知識圖索引,使用維基百科 API 來收集和準備知識圖中的檔案。然後,我們可以使用這個索引來查詢和顯示知識圖中的內容。
圖表翻譯:
以下是知識圖索引根據 RAG 的架構圖:
graph TD A[維基百科 API] --> B[檔案收集和準備] B --> C[Deep Lake 向量儲存] C --> D[知識圖索引根據 RAG] D --> E[查詢和顯示]
這個架構圖顯示了知識圖索引根據 RAG 的整體流程,從維基百科 API 收集檔案到查詢和顯示知識圖中的內容。
建立圖形從樹狀結構
圖形是一組節點(或頂點)透過邊(或弧)相互連線。節點代表實體,邊代表這些實體之間的關係或連線。例如,在我們章節的使用案例中,節點可以代表各種行銷策略,邊可以顯示這些策略如何相互關聯。這有助於新客戶瞭解不同行銷戰術如何共同實作整體業務目標,從而促進更清晰的溝通和更有效的策略規劃。
您可以在本章建立管道之前,在 Tree-2-Graph.ipynb 中玩轉樹狀結構到圖形的沙盒。該程式旨在使用 NetworkX 和 Matplotlib 在 Python 中視覺化樹狀結構中的關係。它特別從給定的節點對中建立一個有向圖,檢查和標記友誼關係,然後以自定義視覺屬性顯示此樹。
程式首先定義主要功能:
build_tree_from_pairs(pairs)
:從節點對列表構建一個有向圖(樹),可能會識別一個根節點。check_relationships(pairs, friends)
:檢查和列印每個對的友誼狀態。draw_tree(G, layout_choice, root, friends)
:使用 Matplotlib 視覺化樹,根據友誼狀態和不同的佈局選項對邊應用不同的樣式。
然後,程式從樹到圖的過程執行:
- 節點對和友誼資料被定義。
- 從節點對中構建樹。
- 關係被檢查對友誼資料。
- 使用選定的佈局繪製樹,邊被樣式化以表示友誼。
例如,程式首先定義了一組節點對及其朋友對:
# 節點對
pairs = [('a', 'b'), ('b', 'e'), ('e', 'm'), ('m', 'p'), ('a', 'z')]
friends = {('a', 'b'), ('b', 'e'), ('e', 'm'), ('m', 'p')}
注意,(‘a’, ‘z’) 不是朋友,因為它們不在朋友列表中。同樣,(‘b’, ‘q’) 也不是朋友。您可以想象節點對之間的任何型別的關係,例如相同的客戶年齡、相似的工作、相同的國家,或您想要代表的任何其他概念。
程式然後構建樹並檢查關係:
# 構建樹
tree, root = build_tree_from_pairs(pairs)
# 檢查關係
check_relationships(pairs, friends)
輸出顯示哪些節點對是朋友,哪些不是:
Pair ('a', 'b'): friend
Pair ('b', 'e'): friend
Pair ('e', 'm'): friend
Pair ('m', 'p'): friend
Pair ('a', 'z'): not friend
Pair ('b', 'q'): not friend
輸出可用於提供類別似搜尋的有用資訊。程式現在使用“spring”佈局繪製圖:
# 繪製樹
layout_choice = 'spring' # 定義您的佈局選擇
draw_tree(tree, layout_choice=layout_choice, root=root, friends=friends)
“spring”佈局模擬了彈簧的效果,節點被彼此吸引,也會相互排斥以避免重疊。您可以深入 draw_tree
函式以探索和選擇其他佈局選項。您還可以修改顏色和線樣式。在這種情況下,朋友節點對以實線表示,而不是朋友的節點對以虛線表示,如下圖所示:
圖表翻譯:
graph LR A[節點A] -->|朋友|> B[節點B] B -->|朋友|> C[節點C] C -->|朋友|> D[節點D] D -->|朋友|> E[節點E] A -->|不是朋友|> F[節點F] B -->|不是朋友|> G[節點G]
您可以使用不同的節點對玩轉這個沙盒圖形。如果您想象著使用數百個節點,您將開始欣賞我們在本章中使用 LlamaIndex 的知識圖索引建立的自動化功能!
讓我們從架構轉到程式碼,從收集和準備開始。
從維基百科擷取資料與中繼資料
為了擷取我們需要的中繼資料和檔案,我們將使用維基百科API。以下程式碼展示瞭如何從維基百科擷取相關頁面的URL,包括每個頁面的參照,並進行資料清理和彙總,以便插入Deep Lake向量儲存中。
Pipeline 1 流程圖
Pipeline 1 包含兩個筆記本:
Wikipedia_API.ipynb
:實作維基百科API以擷取根頁面相關主題的URL,包括每個頁面的參照。在這個案例中,主題是「行銷」。Knowledge_Graph_Deep_Lake_LlamaIndex_OpenAI_RAG.ipynb
:實作所有三個pipeline。在Pipeline 1中,它將從玄貓提供的URL中擷取資料,進行清理和彙總,以便插入。
擷取維基百科資料和中繼資料
首先,我們需要安裝必要的函式庫並設定維基百科API。以下程式碼片段展示瞭如何開始:
try:
import wikipediaapi
except:
!pip install Wikipedia-API==0.6.0
import wikipediaapi
接下來,我們定義一個函式用於計算摘要中的token數量:
def nb_tokens(text):
# 更加複雜的tokenization,包括標點符號
tokens = word_tokenize(text)
return len(tokens)
這個函式使用NLTK函式庫進行複雜的tokenization,包括標點符號。然後,我們設定維基百科API的例項,指定語言和使用者代理:
wiki = wikipediaapi.Wikipedia(
language='en',
user_agent='Knowledge/1.0 ([USER AGENT EMAIL])'
)
在這個例子中,我們使用英語(’en’)作為語言,並需要指定使用者代理資訊,如電子郵件地址。現在,我們可以定義主要主題和相關的維基百科頁面名稱:
main_topic = "marketing"
filename = "marketing_wikipedia_data"
以下步驟將涉及使用維基百科API擷取相關頁面的URL和中繼資料,然後進行資料清理和彙總。這些步驟對於準備資料以便插入Deep Lake向量儲存至關重要。
圖表翻譯:
flowchart TD A[開始] --> B[設定維基百科API] B --> C[定義tokenization函式] C --> D[擷取維基百科資料] D --> E[清理和彙總資料] E --> F[插入Deep Lake向量儲存]
這個流程圖展示了從設定維基百科API到插入Deep Lake向量儲存的整個過程。每一步驟都對於確保資料的準確性和完整性至關重要。
行銷概述
行銷是指企業或組織透過各種方式來滿足和留住顧客的行為。它是商業管理和商務的重要組成部分。行銷通常由專業團隊負責,例如玄貓,負責開發和實施有效的行銷策略,以達到企業的目標。
行銷的重要性
行銷對於企業的成功至關重要。它幫助企業瞭解顧客的需求和偏好,從而制定有效的產品和服務。同時,行銷還可以幫助企業建立品牌形象,增加市占率和競爭力。
行銷的內容
行銷的內容包括市場調查、競爭分析、產品開發、價格策略、促銷策略、分銷策略等。企業需要根據自己的目標和資源,選擇合適的行銷策略,以達到最佳的效果。
行銷工具
行銷工具包括社交媒體、搜尋引擎最佳化、電子郵件行銷、內容行銷等。企業可以根據自己的需要,選擇合適的工具來實施行銷策略。
內容解密:
行銷是企業成功的關鍵因素。透過瞭解顧客的需求和偏好,企業可以制定有效的行銷策略,以達到自己的目標。行銷工具的選擇需要根據企業的具體情況和目標進行。
flowchart TD A[行銷] --> B[市場調查] B --> C[競爭分析] C --> D[產品開發] D --> E[價格策略] E --> F[促銷策略] F --> G[分銷策略]
圖表翻譯:
此圖示行銷的流程。首先,企業需要進行市場調查,以瞭解顧客的需求和偏好。然後,企業需要進行競爭分析,以瞭解市場的競爭情況。接下來,企業需要開發產品,以滿足顧客的需求。同時,企業需要制定價格策略、促銷策略和分銷策略,以達到最佳的效果。
網頁連結擷取與摘要
簡介
在網頁中,連結(links)扮演著重要的角色,連結到其他網頁或資源。以下將介紹如何擷取網頁中的連結,並對每個連結進行摘要。
程式碼實作
import wikipedia as wiki
# 定義最大連結數
maxl = 10
# 取得網頁中的連結
links = wiki.page("Example").links
# 初始化連結列表
urls = []
# 初始化計數器
counter = 0
# 迭代每個連結
for link in links:
try:
# 增加計數器
counter += 1
# 列印連結資訊
print(f"連結 {counter}: {link}")
# 取得連結的摘要
summary = wiki.page(link).summary
# 列印連結 URL
print(wiki.page(link).fullurl)
# 將連結 URL 加入列表
urls.append(wiki.page(link).fullurl)
# 列印摘要
print(f"摘要: {summary}")
# 檢查是否達到最大連結數
if counter >= maxl:
break
# 忽略不存在的頁面
except wiki.exceptions.DisambiguationError as e:
pass
except wiki.exceptions.PageError as e:
pass
內容解密:
上述程式碼使用 wikipedia
函式庫來擷取網頁中的連結,並對每個連結進行摘要。以下是程式碼的詳細解說:
- 定義最大連結數:設定
maxl
變數來控制要擷取的連結數量。 - 取得網頁中的連結:使用
wiki.page("Example").links
來取得網頁中的連結。 - 初始化連結列表:建立一個空列表
urls
來儲存連結的 URL。 - 迭代每個連結:使用
for
迴圈來迭代每個連結。 - 取得連結的摘要:使用
wiki.page(link).summary
來取得連結的摘要。 - 列印連結資訊:列印連結的名稱、URL 和摘要。
- 將連結 URL 加入列表:將連結的 URL 加入
urls
列表中。 - 檢查是否達到最大連結數:如果已經達到最大連結數,則停止迴圈。
圖表翻譯:
flowchart TD A[開始] --> B[取得網頁中的連結] B --> C[迭代每個連結] C --> D[取得連結的摘要] D --> E[列印連結資訊] E --> F[將連結 URL 加入列表] F --> G[檢查是否達到最大連結數] G --> H[停止迴圈]
圖表解說:
上述流程圖描述了程式碼的執行流程。以下是圖表的詳細解說:
- 開始:程式碼的開始點。
- 取得網頁中的連結:取得網頁中的連結。
- 迭代每個連結:迭代每個連結。
- 取得連結的摘要:取得連結的摘要。
- 列印連結資訊:列印連結的名稱、URL 和摘要。
- 將連結 URL 加入列表:將連結的 URL 加入列表中。
- 檢查是否達到最大連結數:檢查是否已經達到最大連結數。
- 停止迴圈:如果已經達到最大連結數,則停止迴圈。
自動化網頁資料擷取與檔案生成
網頁連結擷取與摘要生成
在進行網頁資料擷取時,我們需要先定義一個函式來擷取網頁中的連結。這個函式會根據設定的最大連結數量 maxl
來限制擷取的連結數量。然後,我們會檢查輸出的連結和摘要,以確保它們符合我們的需求。
生成檔案
接下來,我們需要將擷取到的連結和摘要寫入檔案中。首先,我們會建立一個檔案來存放引文,檔案名稱以主題名稱為字首,字尾為 _citations.txt
。然後,我們會寫入引文標題、根頁面 URL 和時間戳記。
from datetime import datetime
# 取得所有連結
links = page.links
# 準備檔案來存放輸出
fname = filename + "_citations.txt"
with open(fname, "w") as file:
# 寫入引文標題
file.write(f"Citation. In Wikipedia, The Free Encyclopedia.\n")
file.write("Root page: " + page.fullurl + "\n")
# 初始化計數器和 URL 列表
counter = 0
urls = []
#... (處理連結和摘要的程式碼)
# 顯示 URL 列表
print(urls)
# 將 URL 列表寫入檔案
ufname = filename + "_urls.txt"
with open(ufname, 'w') as file:
for url in urls:
file.write(url + "\n")
程式碼解釋
- 引檔案案生成:我們使用
with open()
來開啟檔案,並設定檔案名稱和模式("w"
代表寫入模式)。然後,我們寫入引文標題和根頁面 URL。 - URL 列表生成:我們使用
for
迴圈來迭代連結列表,並將每個 URL 寫入檔案中。 - 檔案命名:我們使用主題名稱作為檔案名稱的字首,字尾為
_citations.txt
或_urls.txt
,以區分引檔案案和 URL 列表檔案。
圖表翻譯
flowchart TD A[開始] --> B[取得連結] B --> C[生成引檔案案] C --> D[顯示 URL 列表] D --> E[將 URL 列表寫入檔案] E --> F[完成]
圖表翻譯:自動化網頁資料擷取與檔案生成流程
- 開始:程式開始執行。
- 取得連結:取得網頁中的連結。
- 生成引檔案案:生成引檔案案,並寫入引文標題和根頁面 URL。
- 顯示 URL 列表:顯示 URL 列表。
- 將 URL 列表寫入檔案:將 URL 列表寫入檔案。
- 完成:程式完成執行。
準備資料以進行upsert
在這個步驟中,我們將使用Knowledge_Graph_Deep_Lake_LlamaIndex_OpenAI_RAG.ipynb筆記本來處理由玄貓.ipynb筆記本提供的URL。這個筆記本可以在GitHub目錄中找到。
首先,讓我們定義工作流程的策略。在筆記本的Scenario部分,我們需要設定以下引數:
graph_name
: 檔案管理的檔名稱。在這個例子中,我們使用"Marketing"作為字首(主題)。db
: 向量儲存和資料集的路徑。我們可以選擇自己想要的資料集名稱。vector_store_path
和dataset_path
: 分別是向量儲存和資料集的路徑。在這個例子中,我們使用相同的路徑db
。pop_vs
: 如果為True,則啟動資料插入;如果為False,則停用插入並跳過到下一步。ow
: 如果為True,則覆寫現有的資料集;如果為False,則追加到現有的資料集。
這些引數將決定筆記本中三個管道的行為。
接下來,我們可以啟動Pipeline 1:Collecting and preparing the documents部分的筆記本。程式將下載之前章節中生成的URL列表。
# 定義變數
if pop_vs == True:
# 啟動資料插入
pass
在這個步驟中,我們需要下載URL列表並準備好資料以進行upsert。讓我們繼續完成這個過程。
內容解密:
上述程式碼片段展示瞭如何定義變數和啟動資料插入。其中,pop_vs
變數控制著是否啟動資料插入。如果pop_vs
為True,則啟動資料插入;如果為False,則停用插入並跳過到下一步。
圖表翻譯:
flowchart TD A[開始] --> B[定義變數] B --> C[啟動資料插入] C --> D[下載URL列表] D --> E[準備資料] E --> F[進行upsert]
此圖表展示了整個過程的流程,從定義變數到進行upsert。每一步驟都清楚地展示了其目的和結果。
文字資料收集與準備
為了收集和準備文字資料,我們需要先定義目錄和檔案名稱。以下是相關程式碼:
directory = "Chapter07/citations"
file_name = graph_name + "_urls.txt"
接下來,我們需要下載檔案並將 URL 儲存在名為 urls
的列表中。
收集和準備文字資料
以下程式碼展示瞭如何讀取檔案、清理和準備資料,以便填充 Deep Lake 向量儲存:
download(directory, file_name)
# 讀取檔案並儲存 URL 在列表中
with open(file_name, 'r') as f:
urls = [line.strip() for line in f.readlines()]
這段程式碼與 Chapter 3 中的 Deep_Lake_LlamaIndex_OpenAI_RAG.ipynb
筆記本中的 Pipeline 1: 收集和準備檔案部分相同。在 Chapter 3 中,網頁的 URL 是手動輸入到列表中的。
建立和填充 Deep Lake 向量儲存
以下程式碼展示瞭如何建立和填充 Deep Lake 向量儲存:
# 建立 Deep Lake 向量儲存
store = DeepLakeStore()
# 填充向量儲存
for url in urls:
# 下載和清理資料
data = download_and_clean(url)
# 將資料轉換為向量
vector = embed(data)
# 將向量儲存到 Deep Lake
store.upsert(vector, metadata={'url': url})
Activeloop Deep Lake 具有內建的預設分塊、嵌入和 upserting 函式,使得整合各種無結構化資料變得容易,就像我們正在 upserting 的 Wikipedia 檔案一樣。
顯示記錄
以下程式碼展示瞭如何顯示記錄:
def display_record(record_number):
record = store.get(record_number)
print("ID:", record['id'])
print("Metadata:", record['metadata'])
print("Text:", record['text'])
print("Embedding:", record['embedding'])
輸出顯示了 ID、元資料(如檔案資訊、收集的資料、文字和嵌入向量):
ID: ['a61734be-fe23-421e-9a8b-db6593c48e08']
Metadata: {
'file_path': '/content/data/24-hour_news_cycle.txt',
'file_name': '24-hour_news_cycle.txt',
'file_type': 'text/plain',
'file_size': 2763,
'creation_date': '2024-07-05',
'last_modified_date': '2024-07-05'
}
Text: ['24hour investigation and reporting of news concomitant with fas']
Embedding:...
這個過程非常簡單,展示了 Activeloop Deep Lake 的強大功能。
圖表翻譯:
graph LR A[下載檔案] --> B[讀取檔案] B --> C[清理和準備資料] C --> D[轉換為向量] D --> E[儲存到 Deep Lake] E --> F[顯示記錄]
建立知識圖索引
為了建立知識圖索引,我們需要從一組檔案中建立索引。這個過程涉及多個步驟,包括生成知識圖索引、顯示圖形、定義使用者提示、定義超引數、安裝相似性評分套件、定義相似性評分函式等。
透過三個管道的建構,我們成功地將維基百科的非結構化資料轉化為可操作的知識圖譜,並藉由RAG技術實作了個人化推薦。深入剖析這三個管道的核心功能,Pipeline 1 利用維基百科 API 擷取資料並進行預處理,Pipeline 2 將處理後的資料嵌入 Pinecone 向量資料函式庫,Pipeline 3 則利用 GPT-4o 根據使用者查詢在向量資料函式庫中進行相似性搜尋,並生成個人化推薦。
技術限制深析顯示,現階段的推薦系統仍面臨一些挑戰。例如,維基百科資料的準確性與時效性需要持續驗證,Pinecone 向量資料函式庫的規模和查詢效率也需要根據實際應用場景進行調整,而 GPT-4o 的生成結果也可能存在偏差或不符合預期的情況。對於這些限制,可以透過匯入資料驗證機制、最佳化向量搜尋演算法、以及結合人工審核等方式來逐步改善。
技術演進預測顯示,知識圖譜與生成式 AI 的結合將成為未來知識管理和資訊檢索的主流趨勢。隨著技術的發展,我們預見更精準的資料擷取、更高效的向量搜尋、以及更智慧的內容生成將成為可能。同時,知識圖譜的應用場景也將不斷擴充套件,涵蓋更廣泛的領域,例如教育、醫療、金融等。
玄貓認為,儘管目前仍存在一些技術挑戰,但知識圖譜與生成式 AI 的結合已展現出巨大的商業潛力。對於希望提升客戶體驗、最佳化決策流程的企業而言,及早佈局這項技術將獲得顯著的競爭優勢。