Skip to main content
Azure SQL 提供了一个专用的 向量数据类型,简化了在关系数据库内直接创建、存储和查询向量嵌入的过程。这消除了对单独向量数据库及相关集成的需求,提高了您解决方案的安全性,同时降低了整体复杂性。
Azure SQL 是一项强大的服务,结合了可扩展性、安全性和高可用性,提供了现代数据库解决方案的所有优势。它利用复杂的查询优化器和企业级功能,在执行传统 SQL 查询的同时进行向量相似性搜索,从而增强数据分析和决策能力。 阅读更多关于在 Azure SQL 数据库中使用智能应用 的信息。 本笔记本向您展示如何利用这个集成的 SQL 向量数据库 来存储文档,并使用余弦(余弦距离)、L2(欧几里得距离)和 IP(内积)执行向量搜索查询,以定位与查询向量接近的文档。

设置

安装 langchain-sqlserver Python 包。 代码位于一个名为 langchain-sqlserver 的集成包中。

凭据

运行此笔记本不需要任何凭据,只需确保您已下载 langchain-sqlserver 包。 如果您想获得一流的模型调用自动跟踪功能,也可以取消注释以下内容来设置您的 LangSmith API 密钥:

初始化

在 Azure 门户中您的数据库设置下找到您的 Azure SQL DB 连接字符串。 更多信息:连接到 Azure SQL DB - Python
在此示例中,我们使用 Azure OpenAI 生成嵌入,但您也可以使用 LangChain 提供的不同嵌入。 您可以按照此 指南 在 Azure 门户上部署 Azure OpenAI 实例。一旦您的实例运行起来,请确保您拥有实例的名称和密钥。您可以在 Azure 门户中实例的“密钥和终结点”部分找到密钥。

管理向量存储

向向量存储添加项目

查询向量存储

一旦您的向量存储已创建并且相关文档已添加,您很可能希望在运行链或代理时对其进行查询。 执行简单的相似性搜索可以按如下方式进行:

过滤支持

向量存储支持一组可以应用于文档元数据字段的过滤器。此功能使开发人员和数据分析师能够细化他们的查询,确保搜索结果与他们的需求准确对齐。通过应用基于特定元数据属性的过滤器,用户可以限制搜索范围,仅关注最相关的数据子集。

带分数的相似性搜索

如果您想执行相似性搜索并接收相应的分数,可以运行:
有关您可以在 Azure SQL 向量存储上执行的不同搜索的完整列表,请参阅 API 参考

当您已有要搜索的嵌入时的相似性搜索

从向量存储中删除项目

按 ID 删除行

删除向量存储

从 Azure Blob 存储加载文档

以下是从 Azure Blob 存储容器加载文件到 SQL 向量存储的示例,首先将文档分割成块。 Azure Blob 存储 是 Microsoft 的云对象存储解决方案。Blob 存储针对存储大量非结构化数据进行了优化。
API 参考:AzureBlobStorageContainerLoader

直接查询

用于检索增强生成的用例

用例 1:基于故事书的问答系统

问答功能允许用户询问关于故事、角色和事件的具体问题,并获得简洁、上下文丰富的答案。这不仅增强了他们对书籍的理解,还让他们感觉自己是魔法世界的一部分。

通过转换为检索器进行查询

LangChain 向量存储通过启用高效的相似性搜索来简化构建复杂的问答系统,根据用户查询找到前 10 个相关文档。检索器vector_store 创建,问答链使用 create_stuff_documents_chain 函数构建。使用 ChatPromptTemplate 类创建提示模板,确保结构化和上下文丰富的响应。在问答应用中,向用户展示用于生成答案的来源通常很重要。LangChain 内置的 create_retrieval_chain 会将检索到的源文档传播到输出中的 “context” 键下: 阅读更多关于 LangChain RAG 教程和术语 的信息。

API 参考

有关 SQLServer 向量存储功能和配置的详细文档,请访问 API 参考:https://python.langchain.com/api_reference/sqlserver/index.html

相关内容