Posted on

LlamaIndex的基礎元件

基礎元件

LlamaIndex 的基礎元件包括:

  1. Nodes(節點):LlamaIndex 的基本單位,是一個包含一段文本的資料結構。當提供一個文件時,可以將其分割成多個片段並存儲在節點中。
  2. Document Loader(文檔加載器):用於從各種來源(如網頁、YouTube 視頻、PDF 等)提取數據的接口。LlamaIndex 支持多種文檔加載器,用於不同類型的數據源。
  3. Indexes(索引):在 LlamaIndex 中,索引是一種組織和存儲來自各種數據源信息的資料結構,使得搜索變得更加容易。索引是建立在多個節點之上的。LlamaIndex 提供不同類型的索引,方便應對不同的使用場景。
  4. Retrievers(檢索器):在 LlamaIndex 中,檢索器幫助從索引中基於給定的查詢檢索一組節點。它類似於一個搜索工具,從大型數據集中找到相關信息以回答用戶的問題。LlamaIndex 提供不同類型的檢索器,以應對不同的檢索需求。
  5. Query Engines(查詢引擎):在 LlamaIndex 中,查詢引擎處理用戶輸入的查詢,與底層數據結構(如索引)交互,並返回一個綜合的響應。LlamaIndex 提供不同類型的查詢引擎,以應對不同的查詢處理需求。

載入資料

使用SimpleDirectoryReader來載入本地端資料

from llama_index import SimpleDirectoryReader

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

將資料分割成節點

節點是基本的資料結構,用於保存輸入。我們將使用以下程式碼將上述輸入分割成多個節點。

from llama_index.node_parser import SimpleNodeParser
parser = SimpleNodeParser()
nodes = parser.get_nodes_from_documents(documents)

產生索引

現在我們已經創建了節點,可以在其上建立索引。我們將使用 VectorStoreIndex,它會從節點中的所有文本創建嵌入,並將其存儲在向量數據庫中。

from llama_index import LLMPredictor, VectorStoreIndex
from langchain import OpenAI
os.environ["OPENAI_API_KEY"] = "api-key"

index = VectorStoreIndex(nodes)

建立檢索器

我們將使用 VectorIndexRetriever,它會根據相似度檢索出前 k 個匹配的文件。在這個例子中,我們將 k 設為 2。

from llama_index.retrievers import VectorIndexRetriever

retriever = VectorIndexRetriever(
    index=index,
    similarity_top_k=2,
)   

建立查詢引擎

現在我們可以在檢索器之上構建一個查詢引擎來開始進行查詢。

from llama_index.query_engine import RetrieverQueryEngine

query_engine = RetrieverQueryEngine(
    retriever=retriever
)

詢問問題

現在我們可以在檢索器上建立一個查詢引擎來開始進行查詢。

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

Jupyter Notebook完整範例下載

https://github.com/SamurAIGPT/LlamaIndex-course/blob/main/fundamentals/Fundamentals.ipynb