retrieve.neo4j_rm
构造函数
初始化 Neo4jRM
类的一个实例。
Neo4jRM(
index_name: str,
text_node_property: str,
k: int = 5,
retrieval_query: str = None,
embedding_provider: str = "openai",
embedding_model: str = "text-embedding-ada-002",
)
环境变量:
您需要将凭据定义为环境变量:
-
NEO4J_USERNAME
(str): 指定用于与 Neo4j 数据库进行身份验证所需的用户名。这是一项至关重要的安全措施,以确保只有授权用户可以访问数据库。 -
NEO4J_PASSWORD
(str): 定义与NEO4J_USERNAME
关联的用于身份验证的密码。应妥善保管此密码,以防止未经授权访问数据库。 -
NEO4J_URI
(str): 指示用于连接到 Neo4j 数据库的统一资源标识符(URI)。此 URI 通常包括协议、主机名和端口,提供建立与数据库连接所需信息。 -
NEO4J_DATABASE
(str, 可选): 指定要在 Neo4j 实例中连接的数据库的名称。如果未设置,则系统默认使用"neo4j"
作为数据库名称。这允许在单个 Neo4j 服务器中连接到不同的数据库,具有灵活性。 -
OPENAI_API_KEY
(str): 指定用于与 OpenAI 服务进行身份验证所需的 API 密钥。
参数:
index_name
(str): 指定在 Neo4j 中用于组织和查询数据的向量索引的名称。text_node_property
(str, 可选): 定义将返回的节点的特定属性。k
(int, 可选): 从检索操作中返回的前 k 个结果的数量。如果未明确指定,默认为 5。retrieval_query
(str, 可选): 用于检索数据的自定义查询字符串。如果未提供,默认将使用针对text_node_property
定制的查询。embedding_provider
(str, 可选): 用于生成嵌入的服务提供商的名称。如果未指定,默认为 "openai"。embedding_model
(str, 可选): 要从提供商使用的特定嵌入模型。默认情况下,它使用 OpenAI 的 "text-embedding-ada-002" 模型。
方法
forward(self, query: [str], k: Optional[int] = None) -> dspy.Prediction
搜索 neo4j 向量索引,查找与给定查询或查询匹配的前 k 个段落,使用通过指定的 embedding_model
生成的嵌入。
参数:
query
(str_): 查询。k
(Optional[int], 可选): 要检索的结果数量。如果未指定,默认为初始化期间设置的值。
返回:
dspy.Prediction
: 包含检索到的段落作为字符串列表的预测签名。
示例:
预测(
段落=['段落 1 Lorem Ipsum 真棒', '段落 2 Lorem Ipsum 优皮杜', '段落 3 Lorem Ipsum 耶耶耶']
)
快速示例:如何在本地环境中使用 Neo4j。
from dspy.retrieve.neo4j_rm import Neo4jRM
import os
os.environ["NEO4J_URI"] = 'bolt://localhost:7687'
os.environ["NEO4J_USERNAME"] = 'neo4j'
os.environ["NEO4J_PASSWORD"] = 'password'
os.environ["OPENAI_API_KEY"] = 'sk-'
retriever_model = Neo4jRM(
index_name="vector",
text_node_property="text"
)
results = retriever_model("探索量子计算的重要性", k=3)
for passage in results:
print("文档:", passage, "\n")
在这个示例中,我们展示了如何在本地环境中使用 Neo4j。首先,我们设置了连接到本地数据库的 URI、用户名和密码。然后,我们创建了一个 Neo4jRM 实例,指定了索引名称和文本节点属性。接下来,我们使用这个实例来检索与给定查询“探索量子计算的重要性”相关的前3个结果,并将结果打印输出。