This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Answer

了解如何使用 NodeRAG 来协助模型生成特定领域的答案。

使用 NodeRAG 有两种方式:

  1. 在代码中直接导入模块
  2. 通过API 客户端连接到已部署的 NodeRAG 服务

每种方法都有其优势。直接导入为本地使用提供了简单直接的集成方式。但是,如果你计划将 NodeRAG 部署为服务,使用 API 客户端被认为是最佳实践。

1 - 导入模块

学习如何在代码中直接导入模块以使用 NodeRAG。

导入模块

通过最简单的设置快速构建搜索引擎:

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() 返回一个对象,该对象同时包含答案检索上下文,以及有用的元数据。
  • 这种方法非常适合快速集成到 Python 脚本或 Jupyter notebook 中,无需设置 API 服务器。

导入模块

2 - localhost

学习如何设置 NodeRAG API 客户端并从请求中生成答案

设置 API 客户端

确保您已经完成语料库的索引,然后使用以下命令启动 API 服务器:

python -m NodeRAG.search -f path/to/main_folder

这将启动一个基于 Flask 的 API 客户端。

client

您可以通过更新配置文件中的 config.urlconfig.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

teminal_answer

在 Python / Jupyter Notebook 中使用(常用方式)

您可以通过 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.urlconfig.port 配置主机和端口。

client_result