LLamaIndex里面的Index
CVP栈里面的V就是一种Index。使用LLamaIndex的时候,会用到各类的Index。
一、索引类型
1. 列表索引(现在叫总结索引Summary)
顺序的节点,逐个进行查询。 [Node]->[Node]->[Node]
查询
查询的时候,如果无任何参数,直接返回所有的Node。 同时提供很多种查询方法,例如,嵌入式查询会返回TopN的邻居,或附加其他关键字过滤条件。
2. 向量索引
可以提供语义相似度进行检索。数据存储在一个向量存储内。 查询出TopN的相似节点。然后进行返回。
3. 树索引
从下而上构建,上级是下级的总结。每个父节点包含子节点的信息。使用时候可以从父节点开始,或者直接从叶节点开始。
树索引的查询涉及到从根节点的便利。
4. 关键词索引
关键词和节点(LlamaIndex中的Node)之间是N-to-N的连接。 其实就算是标签和节点的关系。
查询的时候就是找查询中的关联关键词。
5. 图索引
有关系结构的索引,使用的时候可以在这个基础上进行二次索引,并且在找到相关节点后,进行相关知识的关联检索。
二、构建和使用索引
documents = SimpleDirectoryReader('data').load_data()
index = GPTVectorStoreIndex.from_documents(documents)
query_engine = index.as_query_engine()
response=query_engine.query("What did the author do growing up?")
print(response)
三、保存和加载索引
索引生成需要调用GPT等模型,保存索引可以多次使用,从加快速度,节省token,降低大模型使用成本
保存索引:
index.storage_context.persist()
加载索引:
from llama_index import StorageContext, load_index_from_storage
storage_context = StorageContext.from_defaults(persist_dir="./storage")
indexindex = load_index_from_storage(storage_context)