LlamaIndex --- Indexing

Indexing 相关内容

概念解释

Indexing(索引):在数据加载之后,我们有一系列的 Document 对象(或 Node 对象)。此时,我们需要在这些对象上构建索引(Index),以便能够开始查询这些数据。

Index(索引):在LlamaIndex中,索引是一种数据结构,由 Document 对象组成,旨在通过LLM(大型语言模型)进行查询。索引的设计与查询策略相辅相成。

常见的索引类型

LlamaIndex提供了几种不同的索引类型,其中最常见的有两种:

  1. Vector Store Index(向量存储索引)
  2. Summary Index(摘要索引)
Vector Store Index

Vector Store Index 是最常见的索引类型。它将 Document 对象分割成 Node 对象,并为每个节点的文本创建向量嵌入(vector embeddings),以便通过LLM进行查询。

什么是嵌入(Embedding)?

向量嵌入是LLM应用的核心。嵌入是文本语义或意义的数值表示。具有相似意义的两个文本片段将具有数学上相似的嵌入,即使实际文本差异很大。这种数学关系使得语义搜索成为可能,用户提供查询词,LlamaIndex可以找到与查询词意义相关的文本,而不仅仅是关键词匹配。

Vector Store Index 嵌入文档

Vector Store Index 使用LLM的API将所有文本转换为嵌入。如果有大量文本,生成嵌入可能需要很长时间,因为涉及许多往返API调用。

Top K 检索

当需要搜索嵌入时,查询本身也会被转换为向量嵌入,然后通过数学运算对所有嵌入进行排序,按与查询的语义相似度排序。排序完成后,Vector Store Index 返回最相似的嵌入对应的文本块。返回的嵌入数量称为 k,控制返回嵌入数量的参数称为 top_k。这种搜索通常被称为“top-k 语义检索”。

使用 Vector Store Index

要使用 Vector Store Index,可以将加载阶段创建的 Document 列表传递给它:

from llama_index.core import VectorStoreIndex

# 从文档创建索引
index = VectorStoreIndex.from_documents(documents)

提示:from_documents 方法还接受一个可选参数 show_progress。设置为 True 可以在索引构建过程中显示进度条。

也可以选择直接在 Node 对象列表上构建索引:

from llama_index.core import VectorStoreIndex

# 从节点创建索引
index = VectorStoreIndex(nodes)
Summary Index

Summary Index 是一种更简单的索引形式,最适合于生成文档文本摘要的查询。它简单地存储所有 Document 对象,并在查询引擎请求时返回所有这些对象。

进一步阅读

如果数据是一组相互关联的概念(在计算机科学术语中,称为“图”),则可能对知识图谱索引感兴趣。

总结

通过本课程,我们详细讲解了Indexing的概念及其在LlamaIndex中的应用。我们介绍了Vector Store Index和Summary Index两种常见的索引类型,以及如何使用这些索引进行数据查询。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

需要重新演唱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值