使用 NodeRAG 有两种方式:
- 在代码中直接导入模块
- 通过API 客户端连接到已部署的 NodeRAG 服务
每种方法都有其优势。直接导入为本地使用提供了简单直接的集成方式。但是,如果你计划将 NodeRAG 部署为服务,使用 API 客户端被认为是最佳实践。
This is the multi-page printable view of this section. Click here to print.
使用 NodeRAG 有两种方式:
每种方法都有其优势。直接导入为本地使用提供了简单直接的集成方式。但是,如果你计划将 NodeRAG 部署为服务,使用 API 客户端被认为是最佳实践。
通过最简单的设置快速构建搜索引擎:
from NodeRAG import NodeConfig, NodeSearch
# 从主文件夹加载配置
config = NodeConfig.from_main_folder(r"C:\Users\Terry_Xu\Desktop\HP")
# 初始化搜索引擎
search = NodeSearch(config)
# 查询系统
ans = search.answer('who is harry potter?')
# 'ans' 是一个包含多个可访问属性的对象:
# response:对您问题的生成答案
print(ans.response)
# 答案中的 token 数量
print(ans.response_tokens)
# 检索信息:用于生成答案的上下文
print(ans.retrieval_info)
# 检索上下文中的 token 数量
print(ans.retrieval_tokens)
search.answer()
返回一个对象,该对象同时包含答案和检索上下文,以及有用的元数据。确保您已经完成语料库的索引,然后使用以下命令启动 API 服务器:
python -m NodeRAG.search -f path/to/main_folder
这将启动一个基于 Flask 的 API 客户端。
您可以通过更新配置文件中的 config.url
和 config.port
来修改 localhost
地址和端口。
#==============================================================================
# 文档处理配置
#==============================================================================
config:
# 搜索服务器设置
url: '127.0.0.1' # 搜索服务的服务器 URL
port: 5000 # 服务器端口号
设置完客户端后,您可以直接从命令行使用 NodeRAG。请求代码已完全封装,便于使用。
python -m NodeRAG -f path/to/main_folder -q "您的问题"
要检索相关上下文,使用 -r
标志:
python -m NodeRAG -f path/to/main_folder -q "您的问题" -r
要同时检索答案和相关上下文,使用 -r -a
标志:
python -m NodeRAG -f path/to/main_folder -q "您的问题" -r -a
您可以通过 HTTP 请求在 Python 或 Jupyter Notebook 中与 NodeRAG API 交互。以下是一个常见的使用示例。
import requests
# 配置 API 端点
url = '127.0.0.1'
port = 5000
localhost = f'http://{url}:{port}'
question = 'who is harry potter?'
data = {'question': question}
# 仅请求答案
response = requests.post(localhost + '/answer', json=data)
print(response.json()['answer'])
# 仅请求检索上下文
response = requests.post(localhost + '/retrieval', json=data)
print(response.json()['retrieval'])
# 同时请求答案和检索上下文
response = requests.post(localhost + '/answer_retrieval', json=data)
result = response.json()
print({'answer': result['answer'], 'retrieval': result['retrieval']})
POST /answer
:返回对您查询的生成答案。POST /retrieval
:返回从语料库中检索的相关上下文。POST /answer_retrieval
:返回答案及其相关上下文。⚙️ 注意: 发送请求前请确保 API 服务器正在运行。您可以通过
Node_config.yaml
中的config.url
和config.port
配置主机和端口。