简介

人类擅长自然语言,却不擅长数字;计算机擅长数字,却不擅长自然语言。那么,我们如何将计算机用于需要理解自然语言的任务呢?假设有一个包含电影的 Neo4j 数据库,如果您的兴趣是用文字表达的,我们如何查询它以找出最符合您兴趣的电影?例如,哪些电影是关于对美国意大利黑手党的探索?哪些电影与一个罪犯因爱而改变有关?哪些电影彼此相似?

Neo4j 的向量索引允许您检索与其他节点和关系相似,或与给定文本提示相关的节点和关系。然而,向量索引不适用于自然语言表达的文本:它们需要将文本转换为数字列表。这些列表称为嵌入,它们试图用数值编码文本的含义。通过向量索引,数据库可以根据图实体的嵌入快速匹配它们。

例如,下图显示了电影卑鄙的我的标题和情节及其对应的嵌入。

despicable embedding

本教程使用推荐数据集,其中包含电影以及执导或参演这些电影的人物。

recommendations model

您将了解如何设置环境,在电影节点上创建嵌入(包括使用免费和开源库以及外部 AI 提供商),创建向量索引,以及根据大致描述或相似电影查询数据库中的电影。

本指南有以下要求:

  • 一个运行中的 Neo4j 实例 >= 5.13 —— 如果您没有,请在本地安装 Neo4j 或注册一个Aura 云实例

  • Cypher 有一定了解 —— 如果您是新手,请查阅入门 → Cypher®

  • python 及其一些基础知识。

  • (可选)如果您打算使用外部 AI 提供商生成嵌入,则需要其中一个提供商的 API 密钥。

您应始终使用相同的模型为数据集生成嵌入:选择一个并在本教程中始终使用它来生成所有嵌入。

术语表

Aura

Aura 是 Neo4j 的全托管云服务。它提供免费和付费计划。

Cypher

Cypher 是 Neo4j 的图查询语言,可让您从数据库中检索数据。它类似于 SQL,但用于图。

© . All rights reserved.