跳到主要内容

LlamaIndex 高级开发

本文介绍多种索引、检索策略、与外部向量库的集成及 Agent 工作流。

多种索引类型

向量索引(默认)

from llama_index.core import VectorStoreIndex
index = VectorStoreIndex.from_documents(documents)

树索引(层次摘要)

from llama_index.core import TreeIndex
tree_index = TreeIndex.from_documents(documents)
query_engine = tree_index.as_query_engine()

关键词索引

from llama_index.core import KeywordTableIndex
keyword_index = KeywordTableIndex.from_documents(documents)

检索策略

Top-K 与相似度阈值

from llama_index.core.retrievers import VectorIndexRetriever

retriever = VectorIndexRetriever(index=index, similarity_top_k=5)
# 或在 QueryEngine 中配置
query_engine = index.as_query_engine(similarity_top_k=5)

混合检索(Hybrid)

结合向量检索与 BM25 等关键词检索,提高召回质量。

重排序(Reranker)

使用 Cohere、BGE Reranker 等对初筛结果重排,提升精确度。

与外部向量库集成

LlamaIndex 支持 Chroma、Pinecone、Milvus、Qdrant 等:

from llama_index.vector_stores.chroma import ChromaVectorStore
import chromadb

chroma_client = chromadb.Client()
chroma_collection = chroma_client.get_or_create_collection("docs")
vector_store = ChromaVectorStore(chroma_collection=chroma_collection)
index = VectorStoreIndex.from_documents(documents, vector_store=vector_store)

Agent 与工具

将检索封装为工具,供 Agent 调用:

from llama_index.core.tools import QueryEngineTool
from llama_index.core.agent import ReActAgent

tool = QueryEngineTool.from_defaults(query_engine=query_engine, name="knowledge_base")
agent = ReActAgent.from_tools([tool])
response = agent.chat("根据知识库总结...")

子问题分解

from llama_index.core.query_engine import SubQuestionQueryEngine

sub_query_engine = SubQuestionQueryEngine.from_defaults(query_engine=query_engine)
response = sub_query_engine.query("请分别回答:A 是什么?B 与 C 的关系?")

参考