张子阳的博客

首页 读书 技术 店铺 关于
张子阳的博客 首页 读书 技术 关于

LlamaIndex 查询本地文件

2025-04-29 张子阳 分类: 大语言模型

上一篇文章 中,我们已经构建了本地的文件向量数据库,并对其进行了查询。但对于小型文件,或者仅执行一次的查询而言,这种方式又显得比较繁琐,因为它分为了两个步骤,且在本地生成了vector向量数据库。对于临时查询而言,这个文件夹就相当于“临时文件”了。本文延续上面的例子,只不过不在本地创建文件向量库,而是对文件进行直接查询。

在工作目录下,新建一个文件:txt_file_query.py,内容如下:

# 构建向量库 from dotenv import load_dotenv load_dotenv() # 选择embedding模型 from llama_index.core import Settings from llama_index.embeddings.openai import OpenAIEmbedding from llama_index.llms.openai import OpenAI Settings.embed_model = OpenAIEmbedding(model="text-embedding-3-large") Settings.llm = OpenAI(model="gpt-4o") # 1. 加载 from llama_index.core import SimpleDirectoryReader documents = SimpleDirectoryReader(input_files=["./player.txt"]).load_data() # 2. 索引 from llama_index.core import VectorStoreIndex vector_index = VectorStoreIndex.from_documents(documents) # 3. 转换为查询引擎 query_engine = vector_index.as_query_engine() # 4. 查询 response = query_engine.query("ShadowBlade_007 注册了多久了?") # 5. 打印结果 print(response)

执行脚本,输出结果如下:

D:\codes\llamaindex\rag_txt> py .\txt_file_query.py ShadowBlade_007注册了1324天。

上面代码中,比较关键的一句是:vector_index.as_query_engine()。query_engine是​​查询执行引擎​​,负责将自然语言查询转化为检索-生成流程,最终输出答案。它的工作,主要是两部分:

如何对检索的相似度进行调优,这个在后续的章节再说,这里仅跑通流程。

另一个核心对象是vector_index,它是向量存储索引对象​​,核心功能是将文档内容转化为可快速检索的向量结构,为后续语义搜索提供基础。它的工作,主要是下面三部分:

在这个例子中,未提现节点(Node)和相关的配置,全部采用了默认配置。因为LlamaIndex以及大语言开发,涌现了非常多的概念和配置,这些我们将在后续的文章中再行探讨。

感谢阅读,希望这篇文章能给你带来帮助!