RAG 命令行工具#
一个常见的使用场景是与大型语言模型(LLM)讨论您本地计算机上保存的文件。
我们开发了一个CLI工具来帮助您实现这一需求!您可以将rag CLI工具指向本地保存的一组文件,它会将这些文件摄取到本地向量数据库中,然后在终端中用于聊天问答交互。
默认情况下,该工具使用OpenAI进行嵌入和LLM处理,以及本地Chroma向量数据库实例。警告:这意味着默认情况下,使用此工具摄取的本地数据_将会_被发送到OpenAI的API。
不过,您可以自定义该工具使用的模型和数据库。这包括完全在本地运行所有模型执行的可能性!请参阅下方的自定义部分。
安装配置#
要设置CLI工具,请确保已安装库:
$ pip install -U llama-index
您还需要安装Chroma:
$ pip install -U chromadb
安装完成后,即可开始使用该工具:
$ llamaindex-cli rag -h
usage: llamaindex-cli rag [-h] [-q QUESTION] [-f FILES [FILES ...]] [-c] [-v] [--clear] [--create-llama]
options:
-h, --help show this help message and exit
-q QUESTION, --question QUESTION
The question you want to ask.
-f, --files FILES [FILES ...]
The name of the file(s) or directory you want to ask a question about,such
as "file.pdf". Supports globs like "*.py".
-c, --chat If flag is present, opens a chat REPL.
-v, --verbose Whether to print out verbose information during execution.
--clear Clears out all currently embedded data.
--create-llama Create a LlamaIndex application based on the selected files.
使用指南#
以下是快速入门的高级步骤:
- 设置
OPENAI_API_KEY
环境变量:默认情况下,该工具使用OpenAI的API。因此,您需要确保在使用工具时,OpenAI API密钥已设置为OPENAI_API_KEY
环境变量。$ export OPENAI_API_KEY=<api_key>
- 摄取文件:现在,您需要将工具指向一些本地文件,这些文件将被摄取到本地向量数据库中。以下示例将摄取LlamaIndex的
README.md
文件:您也可以指定文件通配模式,例如:$ llamaindex-cli rag --files "./README.md"
$ llamaindex-cli rag --files "./docs/**/*.rst"
- 提问:您现在可以开始询问关于之前步骤中摄取的任何文档的问题:
$ llamaindex-cli rag --question "LlamaIndex是什么?" LlamaIndex是一个数据框架,帮助在基于LLM的应用中摄取、构建和访问私有或特定领域数据。它提供诸如从各种来源摄取数据的数据连接器、构建数据的数据索引以及自然语言访问数据的引擎等工具。LlamaIndex采用检索增强生成(RAG)方法,从数据源检索信息,将其作为上下文添加到问题中,然后要求LLM基于丰富的提示生成答案。这种方法克服了微调LLM的局限性,为数据增强提供了更具成本效益、更新及时且可靠的解决方案。LlamaIndex设计面向初级和高级用户,提供易于使用的高级API和可定制扩展的低级API。
- 开启聊天交互界面:您甚至可以在终端中打开一个聊天界面!只需运行
$ llamaindex-cli rag --chat
,然后开始询问关于已摄取文件的问题。
创建LlamaIndex聊天应用#
您还可以基于所选文件创建一个包含FastAPI后端和NextJS前端的全栈聊天应用。
要初始化应用,请确保您的机器上已安装NodeJS和npx。如果未安装,请参考LlamaIndex.TS文档获取安装说明。
一切准备就绪后,创建新应用非常简单。只需运行以下命令:
$ llamaindex-cli rag --create-llama
该命令将调用我们的create-llama
工具,因此您需要提供一些信息来创建应用。您可以在npmjs - create-llama上找到关于create-llama
的更多信息。
❯ llamaindex-cli rag --create-llama
Calling create-llama using data from /tmp/rag-data/...
✔ 您的项目名称是? … my-app
✔ 您想使用哪种模型? › gpt-3.5-turbo
✔ 请提供您的OpenAI API密钥(留空跳过): …
? 您希望如何继续? › - 使用方向键。回车确认。
仅生成代码 (~1秒)
生成代码并安装依赖 (~2分钟)
❯ 生成代码、安装依赖并运行应用 (~2分钟)
...
如果您选择生成代码、安装依赖并运行应用 (~2分钟)
选项,所有依赖将被自动安装并运行应用。然后您可以通过访问此地址来使用应用:http://localhost:3000。
支持的文件类型#
在内部,rag
CLI工具使用SimpleDirectoryReader将本地文件系统中的原始文件解析为字符串。
该模块针对多种文件类型提供了自定义读取器。其中一些可能需要您pip install
另一个模块来解析特定文件类型。
如果遇到SimpleDirectoryReader
没有自定义读取器的文件扩展名,它将仅以纯文本形式读取文件。
有关如何添加自定义文件读取器+自定义CLI工具其他方面的信息,请参阅下一部分!
自定义配置#
rag
CLI工具具有高度可定制性!该工具通过结合IngestionPipeline
和QueryPipeline
模块在RagCLI
模块中实现。
要创建您自己的自定义rag CLI工具,您可以简单地创建一个脚本,实例化RagCLI
类,并配置您自己的IngestionPipeline
和QueryPipeline
。然后,您只需在脚本中运行rag_cli_instance.cli()
,即可针对您选择的嵌入模型、LLM、向量数据库等运行相同的摄取和问答命令。
以下是一些高级代码展示基本设置:
#!/path/to/your/virtualenv/bin/python
import os
from llama_index.core.ingestion import IngestionPipeline, IngestionCache
from llama_index.core.query_pipeline import QueryPipeline
from llama_index.core.storage.docstore import SimpleDocumentStore
from llama_index.cli.rag import RagCLI
# 可选,设置脚本可能需要的任何API密钥(也许使用python-dotenv库代替)
os.environ["OPENAI_API_KEY"] = "sk-xxx"
docstore = SimpleDocumentStore()
vec_store = ... # 您的向量存储实例
llm = ... # 您的LLM实例 - 可选,默认为OpenAI gpt-3.5-turbo
custom_ingestion_pipeline = IngestionPipeline(
transformations=[...],
vector_store=vec_store,
docstore=docstore,
cache=IngestionCache(),
)
# 设置自定义QueryPipeline是可选的!
# 您仍然可以自定义向量存储、LLM和摄取转换,而无需自定义QueryPipeline
custom_query_pipeline = QueryPipeline()
custom_query_pipeline.add_modules(...)
custom_query_pipeline.add_link(...)
# 您可以选择指定自己的自定义读取器以支持其他文件类型
file_extractor = {".html": ...}
rag_cli_instance = RagCLI(
ingestion_pipeline=custom_ingestion_pipeline,
llm=llm, # 可选
query_pipeline=custom_query_pipeline, # 可选
file_extractor=file_extractor, # 可选
)
if __name__ == "__main__":
rag_cli_instance.cli()
完成这些步骤后,您距离使用自定义CLI脚本仅几步之遥:
-
确保将顶部的python路径替换为您的虚拟环境使用的路径_(在虚拟环境激活时运行
$ which python
)_ -
假设您将文件保存在
/path/to/your/script/my_rag_cli.py
。然后,您可以简单地修改shell的配置文件_(如.bashrc
或.zshrc
)_,添加一行如$ export PATH="/path/to/your/script:$PATH"
。 - 之后执行
$ chmod +x my_rag_cli.py
赋予文件可执行权限。 - 大功告成!您现在只需打开一个新的终端会话并运行
$ my_rag_cli.py -h
。您现在可以使用相同的参数运行脚本,但使用您的自定义代码配置! - 注意:如果您只想以
$ my_rag_cli --chat
形式运行命令,可以从my_rag_cli.py
文件中删除.py
扩展名