Skip to main content
Neo4j 是一个集成向量相似性搜索支持的开源图数据库
它支持:
  • 近似最近邻搜索
  • 欧氏距离相似性和余弦相似性
  • 向量和关键词混合搜索
该笔记本展示了如何使用Neo4j向量索引(Neo4jVector)。 See the installation instruction.
我们想使用 OpenAIEmbeddings,因此需要获取OpenAI API Key。
langchain-community包已不再维护。从langchain_community导入的示例可能过时或无法使用。请谨慎使用。

使用余弦距离的相似性搜索(默认)

与向量存储的工作

上述示例是从零构建向量存储。但实际场景中,我们更常需要与现有向量存储工作。为此,可以直接初始化向量存储。
我们也可以通过 from_existing_graph 方法从现有图数据库初始化向量存储。该方法会从数据库拉取相关文本信息,并重新计算存储文本嵌入。
Neo4j还支持关系向量索引,将嵌入存储为关系属性并建立索引。但关系向量索引无法通过LangChain填充,但可以连接现有关系向量索引。

元数据过滤

Neo4j向量存储支持通过并行运行时和精确最近邻搜索实现元数据过滤 需Neo4j 5.18或更高版本 等值过滤语法如下:
元数据过滤还支持以下运算符:
  • $eq: Equal
  • $ne: Not Equal
  • $lt: Less than
  • $lte: Less than or equal
  • $gt: Greater than
  • $gte: Greater than or equal
  • $in: In a list of values
  • $nin: Not in a list of values
  • $between: Between two values
  • $like: Text contains value
  • $ilike: lowered text contains value
您也可以使用 OR 运算符组合过滤条件

添加文档

我们可以向现有向量存储添加文档。

使用检索查询定制响应

您可以通过自定义Cypher片段从图数据库获取其他信息来定制响应。最终生成的Cypher语句如下:
检索查询必须返回以下三个列:
  • text: Union[str, Dict] = 用于填充文档 page_content 的值
  • score: Float = 相似度得分
  • metadata: Dict = 文档额外元数据
更多细节请参考此 博客文章。
以下示例将节点所有属性(除 embedding 外)作为字典传递给 text 列:
您也可以向检索查询传递Cypher参数。参数可用于额外过滤、遍历等操作…

混合搜索(向量 + 关键词)

Neo4j集成了向量索引和关键词索引,支持混合搜索方式
要加载混合搜索,需同时提供向量索引和关键词索引

检索器选项

本节演示如何使用 Neo4jVector 作为检索器。

带来源的问答

本节介绍如何通过 RetrievalQAWithSourcesChain 实现带来源的问答。该组件会从索引中查找文档。

官方原文:src/oss/python/integrations/vectorstores/neo4jvector.mdx · 非官方翻译,译文由 AI 生成,以英文原文为准。
Last modified on November 3, 2026