以下是 LlamaIndex 支持的主要索引类型及其特点,整理成 Markdown 表格,方便您对比和选择: | 索引类型 | 描述 | 优点 | 适用场景 | | -------------------------------- | -------------------------------------------------------- | --------------------------- | ----------------------- | | 向量存储索引(Vector Store Index)| 将文档分割为节点,并使用嵌入模型将每个节点转换为向量,存储在向量数据库中。查询时,通过向量相似度检索相关节点。| 支持语义搜索,适用于大规模数据集,查询效率高。| 构建问答系统、知识库检索等需要语义理解的应用。| | 摘要索引(Summary Index,原 List Index)| 将文档按顺序存储为节点列表。查询时,遍历所有节点,或结合嵌入进行筛选。| 实现简单,适用于小型数据集或对顺序有要求的文档。| 小型数据集或顺序敏感的文档。| | 树索引(Tree Index)| 构建一个层次结构的树形索引,将节点组织为父子关系。查询时,从根节点开始,逐层选择相关子节点,最终定位到目标信息。| 适用于需要分层次摘要或结构化查询的场景。| 需要分层次摘要或结构化查询的场景。| | 关键词表索引(Keyword Table Index)| 从每个节点中提取关键词,建立关键词到节点的映射表。查询时,根据输入中的关键词查找对应的节点。| 查询速度快,适用于关键词明确的查询。| 关键词明确的查询。| | 属性图索引(Property Graph Index)| 构建包含实体和关系的知识图谱,节点表示实体,边表示实体之间的关系。可选地,为节点生成嵌入,以支持语义查询。| 适用于需要表示复杂关系和结构化数据的场景,如知识图谱。| 表示复杂关系和结构化数据的场景,如知识图谱。| | Composable Graph Index | 支持多种子索引并组合 | | | 根据您的具体需求,选择合适的索引类型可以提升查询效率和系统性能。 ```Java from llama_index.embeddings.huggingface import HuggingFaceEmbedding from llama_index.core import Settings embed_model = HuggingFaceEmbedding(model_name="sentence-transformers/all-MiniLM-L6-v2") Settings.embed_model = embed_model index = VectorStoreIndex.from_documents(documents) query_engine = index.as_query_engine() response = query_engine.query("这是自定义 embedding 后的提问") print("回答:", response) ```