
Node.js 后端開發指南:搭建、優化與部署
LlamaIndex 中的 SummaryIndex 提供了三種不同的檢索器模式:default
、embedding
和 llm
。每種模式都有其獨特的技術依賴和應用場景。
SummaryIndexRetriever
是默認的檢索器模式,它主要依賴于預先計算的摘要信息來檢索數據。這種方式的優點是速度快,但缺點是可能無法捕捉到最新的數據變化。
summary_retriever_default = summary_index.as_retriever(retriever_mode="default")
SummaryIndexEmbeddingRetriever
使用嵌入技術來進行檢索。這種方式的優點是可以捕捉到語義上的相似性,但缺點是計算開銷較大。
summary_retriever_embedding = summary_index.as_retriever(retriever_mode="embedding")
SummaryIndexLLMRetriever
使用大型語言模型來進行檢索。這種方式的優點是可以處理復雜的查詢和文檔,捕捉到更深層次的語義關系,但缺點是計算開銷非常大。
summary_retriever_llm = summary_index.as_retriever(retriever_mode="llm")
根據不同的應用需求,選擇合適的檢索器模式至關重要。以下是一些場景和建議:
default
模式。embedding
模式。llm
模式。以下是如何在 Python 中使用 LlamaIndex 構建 SummaryIndex 并執行檢索的示例代碼。
from llama_index.core import SimpleDirectoryReader, get_response_synthesizer
from llama_index.core import DocumentSummaryIndex
from llama_index.llms.openai import OpenAI
from llama_index.core.node_parser import SentenceSplitter
chatgpt = OpenAI(temperature=0, model="gpt-3.5-turbo")
splitter = SentenceSplitter(chunk_size=1024)
response_synthesizer = get_response_synthesizer(response_mode="tree_summarize", use_async=True)
doc_summary_index = DocumentSummaryIndex.from_documents(
city_docs,
llm=chatgpt,
transformations=[splitter],
response_synthesizer=response_synthesizer,
show_progress=True,
)
default
模式;需要捕捉語義相似性,選擇 embedding
模式;需要處理復雜查詢,選擇 llm
模式。通過本文的介紹和示例代碼,相信你對 SummaryIndex 有了更深入的理解。希望這些信息能幫助你在實際項目中更好地應用 LlamaIndex。