有了向量数据库,我们还需 SQL 数据库吗?

这篇具有很好参考价值的文章主要介绍了有了向量数据库,我们还需 SQL 数据库吗?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

“除了向量数据库外,我是否还需要一个普通的 SQL 数据库?”

这是我们经常被问到的一个问题。如果除了向量数据以外,用户还有其他标量数据信息,那么其业务可能需要在进行语义相似性搜索前先根据某种条件过滤数据,例如:

  • 在法律领域,可能只需要从某个特定数据库中搜索相关的法律条款;

  • 在零售业,可能需要搜索某个尺码的男鞋;

  • 在图像搜索时,可能希望搜索 2010-2016 年上映且 IMDB 电影评分高于 7.0 的电影的海报。

对此,我们的答案是——不需要。用向量数据库 Milvus 或全托管的 Milvus 服务——Zilliz Cloud,就无需额外再维护一个 SQL 数据库存储标量了。只要一个系统,用户便可起送实现“向量搜索+标量过滤”的混合查询,从而获取更精准的搜索结果。

其中,Milvus 允许用户在进行向量搜索时依据标量数据进行条件过滤,数据属性可以是除向量以外的任何字段。Milvus 会对向量字段创建向量索引并进行向量相似性搜索,与此同时,还可以通过表达式对搜索结果进行元数据过滤。只需在搜索时输入过滤表达式,Milvus 就会帮你自动进行这两种操作。

本教程使用 Zilliz Cloud Pipelines—— Zilliz Cloud 内置的功能,用于将非结构化数据编码为 Embedding 向量,同时支持用文本和过滤表达式直接搜索向量。我们将演示如何利用标量过滤来召回只符合某些特定条件的文档片段,例如特定的来源网址,或者特定的文件名称。大家也可以利用类似的思路实现召回带有特定标签的文档,例如发表年份、版本号等。

01. 创建 Collection 和 Pipelines

本教程需要用到 Zilliz Cloud 免费版(海外版)。Zilliz Cloud 是全托管的 Milvus 服务,将用户的数据库部署在 Serverless 云服务器上,但我们仍旧可以通过调用 PyMiluvs API 接口在本地使用 Zilliz Cloud 向量数据库。以下用来测试的文本内容来自于 PyMilvus 文档

  1. 打开 https://cloud.zilliz.com/ 并创建 “Starter” 版本集群。
有了向量数据库,我们还需 SQL 数据库吗?,程序人生
  1. 添加 Collection 名称,点击“创建 Collection 和 集群”。
有了向量数据库,我们还需 SQL 数据库吗?,程序人生

默认情况下,创建 Zilliz Cloud 集群时会同时创建 1 个 Collection,本教程中不会使用它。后面我们创建 Zilliz Cloud Pipelines 时,会自动创建另一个 Collection。请注意,这两个 Collection 不相同。

  1. 在左侧导航栏中点击 Piplines,跟随界面提示创建 Pipelines 并上传数据:

a. 请先选择创建“Ingestion Pipeline”。

有了向量数据库,我们还需 SQL 数据库吗?,程序人生

b. 选择刚刚创建的 Serverless 集群,分别输入 Collection 和 Pipeline 名称,点击“添加 function”。

有了向量数据库,我们还需 SQL 数据库吗?,程序人生

c. 选择INDEX_DOC function,输入function名称,其他参数值保留默认即可,点击“添加”。这个function会将文档切片生成向量。

有了向量数据库,我们还需 SQL 数据库吗?,程序人生

d. (可选)再次点击“添加 function”。

有了向量数据库,我们还需 SQL 数据库吗?,程序人生

e. (可选)选择 PRESERVE function,并为其命名,点击“添加”。这个 function 用来保存文档的标签信息。

有了向量数据库,我们还需 SQL 数据库吗?,程序人生
  1. 点击“创建 Ingestion Pipeline”。现在,我们已经完成创建 Ingestion Pipeline 和 Collection。
有了向量数据库,我们还需 SQL 数据库吗?,程序人生
  1. 点击“创建 Deletion 和 Search Pipeline”。

  2. 进入 Pipelines 列表页面,点击按钮“▶️”运行 Ingestion Pipeline。

有了向量数据库,我们还需 SQL 数据库吗?,程序人生
  1. Ingestion Pipeline支持上传您在对象存储上的文件(例如AWS S3 和 Google Cloud Storage)。本例中我们将数据上传至 AWS S3。上传完成后,点击“通过 Pre-signed-URL 分享”。复制分享链接(Pre-signed URL)。如果没有对象存储,可以使用我们提供的测试文件链接 https://publicdataset.zillizcloud.com/milvus_doc.md 当作Pre-signed URL。
有了向量数据库,我们还需 SQL 数据库吗?,程序人生
  1. 在代码中粘贴Pre-signed URL 并点击运行。这步会将文件进行分片提取向量并导入到向量数据库 Collection 中。
有了向量数据库,我们还需 SQL 数据库吗?,程序人生
  1. 进入collection页面,检查 Collection 和 Schema 是否正确。此时文档片段的向量应该已经显示在Data Preview中了。
有了向量数据库,我们还需 SQL 数据库吗?,程序人生

之后,可以在 Playground 界面上或者通过调用 API 来查询数据。

02. 用标量过滤召回符合特定标签的向量

  1. 在 Pipeline 列表中找到 “Search Pipeline”并点击右侧的按钮“▶️”运行 Search Pipeline。

  2. 在请求中,输入一个问题并点击“运行”。

有了向量数据库,我们还需 SQL 数据库吗?,程序人生
  1. 编辑“过滤条件”。请使用布尔表达式。点击运行后,可以看到 Zilliz Cloud 已经根据您输入的条件过滤了搜索结果。
有了向量数据库,我们还需 SQL 数据库吗?,程序人生

用 Zilliz Cloud Pipelines 进行元数据过滤就是这么简单!你可以通过布尔表达式针对除向量字段以外的所有标量字段进行条件过滤。

03. 通过 API 接口进行搜索

同样,我们也可以通过调用 API 接口来进行搜索,使用 API 过程中,用户需要提供以下两点:

  • Zilliz API Token

  • Pipeline ID

我们可以通过集群详情页获取 API Token。

有了向量数据库,我们还需 SQL 数据库吗?,程序人生

如需获取 Pipeline ID,请先在 Pipelines 列表页找到 Search Pipeline,随后在 Pipeline ID 一栏中复制该 Pipelines 的ID。在调用 API 接口时将 Pipeline ID 粘贴到 URL 中。

有了向量数据库,我们还需 SQL 数据库吗?,程序人生

import requests, json
url = "https://controller.api.gcp-us-west1.zillizcloud.com/v1/pipelines/pipe-xxxx/run"
headers = {
    "Content-Type": "application/json",
    "Authorization": f"Bearer {TOKEN}",
}
data = {
    "data": {
        "query_text": SAMPLE_QUESTION
    },
    "params": {
        "limit": TOP_K,
        "offset": 0,
        # Any of these fields can be used in filter expression.
        "outputFields": ["chunk_text", "chunk_id", "doc_name", "source"],
        "filter": "doc_name == 'param.html'"
    }
}

# Send the POST request
response = requests.post(url, headers=headers, json=data)

用 API 进行元数据过滤搜索就是这么简单!如果大家有兴趣了解更多 Zilliz Cloud Pipelines 的使用方法,可以参考 Notebook用 Pipelines 搭建一个有标签过滤功能的 RAG 问答机器人,欢迎上手尝试。

本文由 mdnice 多平台发布文章来源地址https://www.toymoban.com/news/detail-772056.html

到了这里,关于有了向量数据库,我们还需 SQL 数据库吗?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 《向量数据库》——向量数据库Milvus Cloud 和Dify比较

    Zilliz Cloud v.s. Dify Dify 作为开源的 LLMs App 技术栈,在此前已支持丰富多元的大型语言模型的接入,除了 OpenAI、Anthropic、Azure OpenAI、Hugging face、Replicate 等全球顶尖模型及模型托管平台,也完成了国内主流的各大模型支持(如文心一言、智谱 AI 等)。 而 Zilliz Cloud  和 Milvus 则是

    2024年02月08日
    浏览(59)
  • 《向量数据库指南》:向量数据库Pinecone如何集成LangChain (一)

    目录 LangChain中的检索增强 建立知识库 欢迎使用Pinecone和LangChain的集成指南。本文档涵盖了将高性能向量数据库Pinecone与基于大型语言模型(LLMs)构建应用程序的框架LangChain集成的步骤。   Pinecone使开发人员能够基于向量相似性搜索构建可扩展的实时推荐和搜索系统。另一方

    2024年02月15日
    浏览(37)
  • 《向量数据库指南》——开源框架NVIDIA Merlin & 向量数据库Milvus

    推荐系统 pipeline 中至关重要的一环便是为用户检索并找到最相关的商品。为了实现这一目标,通常会使用低维向量(embedding)表示商品,使用数据库存储及索引数据,最终对数据库中数据进行近似最近邻(ANN)搜索。这些向量表示是通过深度学习模型获取的,而这些深度学习

    2024年02月05日
    浏览(56)
  • 《向量数据库指南》——腾讯云向量数据库(Tencent Cloud VectorDB) SDK 正式开源

    腾讯云向量数据库 SDK 宣布正式开源。根据介绍,腾讯云向量数据库(Tencent Cloud VectorDB)的 Python SDK 与 Java SDK 是基于数据库设计模型,遵循 HTTP 协议,将 API 封装成易于使用的 Python 与 Java 函数或类,为开发者提供了更加友好、更加便捷的数据库使用和管理方式。 腾讯云向量

    2024年02月10日
    浏览(53)
  • 【向量数据库】相似向量检索Faiss数据库的安装及余弦相似度计算(C++)

    Faiss 是一个强大的向量相似度搜索库,具有以下优点: 高效的搜索性能:Faiss 在处理大规模向量数据时表现出色。它利用了高度优化的索引结构和近似搜索算法,可以快速地执行最近邻搜索和相似度匹配,具有很低的查询延迟。 高度可扩展:Faiss 提供了多种索引结构和算法

    2024年02月07日
    浏览(51)
  • 《向量数据库指南》——AI原生向量数据库Milvus Cloud 2.3新功能

    支持用户通过 upsert 接口更新或插入数据。已知限制,自增 id 不支持 upsert;upsert 是内部实现是 delete + insert所以性能上会有一定损耗,如果明确知道是写入数据的场景请继续使用 insert。 支持用户通过输入参数指定 search 的 distance 进行查询,返回所有与目标向量距离位于某一

    2024年02月09日
    浏览(40)
  • 向量数据库:使用Elasticsearch实现向量数据存储与搜索

    Here’s the table of contents:   Elasticsearch在7.x的版本中支持 向量检索 。在向量函数的计算过程中,会对所有匹配的文档进行线性扫描。因此,查询预计时间会随着匹配文档的数量线性增长。出于这个原因,建议使用查询参数来限制匹配文档的数量(类似二次查找的逻辑,先使

    2024年02月07日
    浏览(56)
  • 物联网行业中,我们如何选择数据库?

    在当今数字化潮流中,我们面对的不仅是海量数据,更是时间的涟漪。从生产线的传感器到金融市场的交易记录,时间序列数据成为了理解事物演变和趋势的关键。在面对这样庞大而动态的数据流时,我们需要深入了解一种强大的工具——时序数据库。时序数据库的崛起不仅

    2024年04月15日
    浏览(50)
  • 【大模型 向量库】从向量搜索到向量数据库

      向量伴随着 AI 模型的发展而发展。 向量:AI 理解世界的通用数据形式,是多模态数据的压缩。 比如大模型输入输出都是文字文本,但模型实际接触和学习数据是向量化文本。 这个步骤叫 Embedding(嵌入),将文字文本转化为保留语义关系的向量文本。 embedding 模型对自然语

    2024年02月20日
    浏览(39)
  • 《向量数据库指南》——腾讯云向量数据库Tencent Cloud VectorDB产品特性,架构和应用场景

    腾讯云向量数据库(Tencent Cloud VectorDB)是一款全托管的自研企业级分布式数据库服务,专用于存储、检索、分析多维向量数据。该数据库支持多种索引类型和相似度计算方法,单索引支持 10 亿级向量规模,可支持百万级 QPS 及毫秒级查询延迟。腾讯云向量数据库不仅能为大模

    2024年02月14日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包