构建搜索引擎,而非向量数据库(Vector DB) [译]

news2025/7/16 17:47:46

原文:Build a search engine, not a vector DB

作者:

Panda Smith

在过去 12 个月中,我们见证了向量数据库(Vector DB)创业公司的迅猛增长。我此刻并不打算深入探讨它们各自的设计取舍。相反,我更想探讨和解释一些关于向量数据库的常见理解——它是什么、它的功能用途,以及在解决问题时,我们应如何恰当地利用向量数据库。

向量数据库不等于存储器

很多向量数据库的主要作用被描述为解决大语言模型 (LLM) 缺乏长期记忆的问题,或者无法将一个问题的全部上下文放入提示语中。

Chroma raises $18M seed round

然而,向量搜索实质上只是搜索的一种特殊形式。虽然让大语言模型 (LLM) 能够写入和检索数据库非常有用,但最终这更像是提供给智能体一个搜索引擎的权限,而非真正“增加了存储空间”。

假设你是一家企业,想要建立一个由 LLM 驱动的文档查询体验。如果你将向量数据库仅看作是为语言模型提供更多存储空间,那么你可能会把公司的所有产品文档都嵌入其中,然后让用户向你的机器人提问。用户按下回车键时,系统会对他们的查询进行向量搜索,找到相关片段,加载到上下文中,然后让语言模型尝试回答问题。实际上,这正是我在 Stripe 工作时,开发他们的 AI 文档产品 时最初尝试的方法。

但我最终发现,这种方法并不理想。关键在于,尽管向量搜索在某些方面优于传统搜索,但它并非万能。就像常规搜索一样,你可能会在搜索结果中遇到不相关或遗漏的文档。语言模型,就像人类一样,只能利用它们所拥有的信息,而这些不相关的文档很可能会导致误导。

如果你想打造一个优秀的基于文档的 RAG 工具,你首先应该构建一个足够优秀的搜索引擎,让人类也能轻松使用。这可能是你们组织之前已经考虑过的,如果尚未实现,那是因为打造一个高效的搜索引擎通常是一项颇具挑战的工作。

好消息

当你坐下来打算构建一个高效的搜索系统时,你该如何下手呢?在这个问题上,大语言模型 (LLM) 可以成为你的救星。

虽然嵌入技术 (Embeddings) 并非灵丹妙药,但它们的确令人惊叹。相比于关键词搜索,高质量的嵌入式搜索能显著降低假阴性的比率。而将嵌入式搜索与关键词搜索结合使用,其性能远胜于任何纯文本搜索。事实上,谷歌多年来一直在这方面利用 [BERT](https://blog.google/products/search/search-language-understanding

-bert/?ref=blog.elicit.com) 技术。此外,嵌入技术本身及其在大规模搜索中的应用工具已经得到了巨大的改进。市面上有许多经过实战检验的数据库能够结合关键词和向量搜索,我强烈建议使用这些数据库之一(例如在 Elicit 我们使用 Vespa,而像 Chroma 这样的向量数据库现在通常也支持这一功能)。

在将嵌入技术与传统方法结合以改善整体搜索之后,你将迎来一些真正有趣的挑战。一个精于搜索技巧的用户知道如何构造查询以确保找到相关信息(曾有一时期,Google-fu(高效使用谷歌的技巧)被视为一种强大的技艺),语言模型也能做到这一点。例如,如果你的模型想寻找“疟疾疫苗最新动态”,你可以让它构建一个包含日期过滤器的查询语句。这里充满了尚未开发的潜力,而且在此基础上,通过无穷无尽的微调,可以实现令人惊叹的高质量搜索。就像在其他许多情况下一样,虽然在大语言模型出现之前这些都是可能实现的,但它们需要大量的专业技能和努力。现在,你只需几小时的时间和一些计算资源,就能实现有竞争力的性能。

在传统搜索流程中,最后一个阶段通常是重新排序(re-ranking)。过去,要实现重新排序,我们需要基于用户在特定搜索结果页面的点击行为等信号训练一个相关性模型,然后用这个模型对首要结果进行排序。对于没有专门团队来构建搜索引擎的人来说,这是一个难以解决的问题。但现在,借助于语言模型(language models),你可以向模型提供查询与结果之

间的细节信息,从而获得一个相关性评分,这种评分甚至能超越大多数专业定制的系统。

归根结底,AI 的最新进展极大地简化了构建先进搜索引擎的过程,比起以往,所需的努力大幅减少。因此,投入时间和精力来认真打造高效的搜索引擎,所带来的回报是极其可观的。

如果你打算开发一个基于 RAG 的工具(RAG-based tool),那么首先需要着手构建搜索功能。

附言(不太好的消息)

你已经利用上述技术成功构建了一个优秀的搜索引擎,接下来就是部署的时刻了。然而,遗憾的是,语言模型并不能帮你解决搜索引擎建设的另一大挑战:评估问题。

具体来说,这包括能够解答以下问题:

  • “在何种情况下进行搜索是恰当的?”
  • “当你进行搜索时,你真正想找到的内容是什么?”
  • “这些内容在搜索结果中的排名有多高?”

要回答这些问题,你需要构建一套评估和监控系统,通过这套系统来对你的搜索流程进行迭代优化,并判断所做的更改是否真正带来了提升。关于如何评估搜索引擎的更多内容,我推荐阅读这一系列精彩的博文。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1327970.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenCV如何以指定分辨率打开摄像头(C++ / Python代码演示)

问题背景 使用OpenCV打开USB摄像头时经常会遇到一个问题:我的摄像头最高分辨率是1920 * 1080,为什么用OpenCV打开摄像头保存的图片每次都是640 *480?能不能以最高分辨率打开并保存图片呢? 如何解决 首先需要确认自己的摄像头支持的最大分辨率是多少,具体步骤可以参考下…

基于ssm的车辆运输管理系统论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本车辆运输管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息…

若依框架跑起来,Java小白入门(一)

背景 本人Java小白,有一点编程基础(c#)。企业数字化建设大环境是JAVA,所以需要搞起来,而学习最快的方式就是读代码,学以致用干项目。所以这个系列就是从小白看能否变成小黑。码云上有很多框架,…

自定义Taro上传图片hooks(useUploadImg)

有两个方法需要提前引入 FileUtil(上传文件的方法)、to(对请求接口返回做了二次处理,数据和错误提示等) //FileUtil export namespace FileUtil {const env {timeout: 10000,uploadImageUrl: "阿里云的地址",};const genPolicy …

搭载紫光展锐芯的移远通信RedCap模组顺利通过中国联通OPENLAB实验室认证

近日,移远通信联合紫光展锐在中国联通5G物联网OPENLAB开放实验室,完成了RedCap模组RG207U-CN端到端测试验收,并获颁认证证书。移远通信RG207U-CN成为业内率先通过联通OPENLAB认证的紫光展锐RedCap芯片平台的模组。 本次测试基于联通OPENLAB实…

网络技术基础与计算思维实验教程_4.1_PSTN和以太网互连实验

实验内容 实验目的 实验原理 关键命令说明 实验步骤 构建以太网 工作区中放置路由器 交换机 PC机 直通线互连PC0和交换机 交换机和路由器 构建PSTN 放置PSTN 放置PC 为路由器安装modem 打开电源 再为终端安装modem 单击路由器选择图形配置 这个IP地址将成为PC0的默认网关地…

跆拳道加盟培训机构管理系统源码开发方案

一、项目背景与目标 (一)项目背景 跆拳道加盟培训机构管理系统源码开发方案旨在为跆拳道培训机构提供一个全面、高效的管理平台,帮助机构实现学员管理、课程安排、财务管理等方面的自动化和信息化。 (二)项目可行性…

debian10安装配置vim+gtags

sudo apt install global gtags --version gtags //生成gtag gtags-cscope //查看gtags gtags与leaderf配合使用 参考: 【VIM】【LeaderF】【Gtags】打造全定制化的IDE开发环境! - 知乎

vue:ref的作用和实例

定义:用来获取元素或子组件注册或者引用信息,父组件通过$ref获取到相应的DOM对象和子组件 1、vue中ref的作用 获取页面的DOM元素获取子组件的对象(也是一种通信方式) 2、实例 1、获取DOM,首先创建一个父页面index然…

IDEA中Git的常用使用方式

IDEA中Git的常用使用方式 1.初次拉取远程仓库项目代码到本地2.初次提交本地项目代码到远程仓库新分支方式一:提交时把.git目录删除掉,不保留以往修改记录方式二:提交时不删除.git目录,保留以往修改记录 3.日常拉取、提交、推送代码…

虚幻学习笔记20—C++中用户输入控制

一、前言 用户输入主要有鼠标和键盘以及其他的遥感外接设备等,在虚幻中经常会用到这些输入设备的值,比如通过鼠标控制摄像头的方向、键盘控制人物移动等。本文主要讲解简单的输入绑定和虚幻5新增的”增强输入控制“两种方法。 二、实现 2.1、原始的输入…

机器学习--线性回归

目录 监督学习算法 线性回归 损失函数 梯度下降 目标函数 更新参数 批量梯度下降 随机梯度下降 小批量梯度下降法 数据预处理 特征标准化 正弦函数特征 多项式特征的函数 数据预处理步骤 线性回归代码实现 初始化步骤 实现梯度下降优化模块 损失与预测模块 …

FastAPI实现文件上传下载

FastAPI实现文件上传下载 1.后端FastAPI2.后端html3.效果 最近的项目需求,是前端vue,后端fastAPI,然后涉及到图像的消息发送,所以需要用fast写文件上传下载的接口,这里简单记录一下。 1.后端FastAPI import os.path i…

【藏经阁一起读】(80)__《2023龙蜥社区白皮书》

【藏经阁一起读】(80)__《2023龙蜥社区白皮书》 2023龙蜥社区白皮书 作者: 小龙 发布时间:2023-11-15 章节数:79 内容简介: 从解决CentOS停服的问题出发为广大用户的业务连续性提供了坚定的保障&#xf…

R语言【cli】——通过cli_abort用 cli 格式的内容显示错误、警告或信息,内部调用cli_bullets和inline-makeup

cli_abort(message,...,call .envir,.envir parent.frame(),.frame .envir ) 先从那些不需要下大力气理解的参数入手: 参数【.envir】:进行万能表达式编译的环境。 参数【.frame】:抛出上下文。默认用于参数【.trace_bottom】&#xff…

Python---socket 的介绍

1. 问题思考 到目前为止我们学习了 ip 地址和端口号还有 tcp 传输协议,为了保证数据的完整性和可靠性我们使用 tcp 传输协议进行数据的传输,为了能够找到对应设备我们需要使用 ip 地址,为了区别某个端口的应用程序接收数据我们需要使用端口号…

MySQL数据库8.0+版本部署安装

1、安装前准备 1.1、安装文件上传 以mysql-8.0.32版本为例,将 mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz 、my.cnf上传至/opt/software目录。 安装文件百度网盘下载地址: mysql-8.0.32:https://pan.baidu.com/s/1gtPYEa2aT0V2-1Q3-KKxl…

【SpringMVC】REST(Representation State Transfer)ful开发

REST全称Representation State Transfer,表现形式状态转换 文章目录 1. 为什么提出了REST?2. RESTful入门案例案例代码修改请求方式修改成RESTful风格,并以POST方式提交 RESTful格式下传参RESTful入门案例总结RequestBody,Reques…

【高效开发工具系列】eclipse部署web项目

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Go 随机密码

一.Go实现随机密码 随机密码 package mainimport ("fmt""math/rand""os""strconv""time" )func RandomPassword(num int) {length : numif len(os.Args) > 1 {arg : os.Args[1]i, err : strconv.ParseInt(arg, 10, 6…