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

原文: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.mfbz.cn/a/262744.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2018年第七届数学建模国际赛小美赛C题共享单车对城市交通的影响解题全过程文档及程序

2018年第七届数学建模国际赛小美赛 C题 共享单车对城市交通的影响 原题再现: 共享自行车改变了许多城市的交通状况,许多大城市引入共享自行车来解决交通问题。我们需要定量评估共享自行车对城市交通的影响,以及相关的经济、社会和环境影响。…

苹果如何从iCloud恢复备份?正确方法看这里!

iCloud为所有苹果用户免费提供5G内存空间,用户可以将照片、短信、联系人、备忘录等重要信息备份到iCloud云端,这样可以方便在不同设备之间同步和共享。 同时,iCloud保证这些数据在所有苹果设备上及时自动更新。当遇到手机数据丢失时&#xf…

光纤的连接来了

光纤在工程布线中,难免会遇到线不够长或者磨损折断的情况,要怎么处理呢? 首先看看光纤的结构: 纤芯:中心部分,光波在纤芯中传输。 包层:环绕纤芯,折射率低于纤芯,作用是…

工业自动化的通信核心—钡铼技术R10A工业级路由器介绍

随着工业自动化的快速发展,工业通信技术也日新月异。在这个信息时代,工业通信设备的稳定性、可靠性和高效性变得尤为重要。作为工业自动化的核心部件之一,钡铼技术R10A工业级路由器以其出色的性能和卓越的功能在行业内赢得了广泛的赞誉。本文…

关于外贸包裹的那些事

大早晨收到一个客户留言,询问能不能看一下他的货物包裹被送到了哪里,然后客户可以安排他的代理人联系去取包裹,我心里的第一感觉是难道包裹丢失了? 于是赶紧起来查看物流单号,单号显示早在半个多月前已经被他的国内代…

C/C++ 块作用域的静态变量static的应用

块作用域的静态变量 静态变量(static variable)听起来自相矛盾,像是一个不可变的变量。实际上,静态的意思是该变量在内存中原地不动,并不是说它的值不变。具有文件作用域的变量自动具有(也必须是)静态存储器。创建的具…

Python实现接口测试总结--PyMySql库+封装

import pymysql # 封装数据库工具类 class DBUtil ( object ): # 添加类属性 conn None classmethod def __get_conn ( cls ): # 判断 conn 是否为空,如果是,创建 if cls . conn is None : cls . conn pymysql . connect ( host…

前端微信小程序AES加密解密踩坑

项目场景: 今天蛮沮丧的,在和别人对接的时候aes加解密的时候踩了坑。今天有个同事请假了,所以本来他和别人对接的活,老大给了我,然后我就正式踏上了战战兢兢的对接之路。 1.一开始的时候对面先是问用的啥加密方法。这…

Go后端开发 -- Golang的语言特性

Go后端开发 – Golang的语言特性 文章目录 Go后端开发 -- Golang的语言特性一、Golang的优势1.部署极其简单:2.静态语言3.语言层面的并发4.强大的标准库5.简单易学6.运行效率对比 二、Golang的适用领域1.应用领域2.明星产品 三、Golang的不足 一、Golang的优势 1.部…

华清远见作业第十四天

思维导图 1、顺序表按元素删除 代码: int delete_num_delete(sqlist *list,datatype key) {int indexseek_num(list,key);//元素查找函数if(index-1){return -1;}delete_index(list,index);return 0; } 2、顺序表按照元素修改 代码: //顺序表按照元…

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

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

【Java代码审计】RCE篇

【Java代码审计】RCE篇 1.Java中的RCE2.ProcessBuilder命令执行漏洞3.Runtime exec命令执行漏洞4.脚本引擎代码注入5.RCE的防御 1.Java中的RCE 在PHP开发语言中有system()、exec()、shell_exec()、eval()、passthru()等函数可以执行系统命令。在Java开发语言中可以执行系统命令…

7-1 建立二叉搜索树并查找父结点(PTA - 数据结构)

按输入顺序建立二叉搜索树,并搜索某一结点,输出其父结点。 输入格式: 输入有三行: 第一行是n值,表示有n个结点; 第二行有n个整数,分别代表n个结点的数据值; 第三行是x,表示要搜索值…

利用ffmpeg cv2取h265码流视频(转换图片灰屏问题解决)

利用海康威视相机拍出来的视频是H265格式的,相比于常规的H264编码,压缩率更高,但因此如果直接用正常取流方法读取,会出现无法读取的情况 1. 如图h265码流取出图片为灰屏 2 、解决灰屏问题 import subprocess import cv2# 将h265流…

【MyBatis Plus】Service Mapper内置接口讲解

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《MyBatis-Plus》。🎯🎯 &am…

IXXAT NT系列高稳定性网关网桥解决方案

CAN网关网桥功能特点 在之前的文章中我们介绍了CAN中继器在实际场景中的使用,它通常用在CAN的信号远距离传输和降低干扰方面。 我们知道CAN中继器本身并不发出CAN数据帧,而是对CAN数据进行过滤。而CAN网桥则是将上一个网段中的CAN数据帧收取后&a…

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

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

【Java】Mac下的Tomcat安装配置

🔔Tomcat是一个免费的开源web应用服务器,是开发和调试JSP 程序的首选🖐可利用它响应HTML页面的访问请求。 我们在进行网络编程时,其中重要的中间件就是Tomcat,下面我们将进行在Mac上配置Tomcat的讲解。😲 …

LeetCode做题总结 1. 两数之和

1. 两数之和 暴力法哈希法重新分析Java语法 暴力法 2023.09.20 刚开始用暴力法破解&#xff08;C&#xff09; class Solution { public:vector<int> twoSum(vector<int>& nums, int target) {vector<int> a;for(int i0; i<nums.size()-1; i) {for(…

企业网络常用网关冗余技术-VRRP协议原理与配置

局域网中的用户终端通常采用配置一个默认网关的形式访问外部网络&#xff0c;如果此时默认网关设备发生故障&#xff0c;将中断所有用户终端的网络访问&#xff0c;这很可能会给用户带来不可预计的损失&#xff0c;所以可以通过部署多个网关的方式来解决单点故障问题&#xff0…
最新文章