构建搜索引擎,而不是向量数据库

news2024/10/7 8:22:09

英文原文地址:Build a search engine, not a vector DB

构建搜索引擎,而不是矢量数据库

2023 年 12 月 19 日

在过去12个月里,向量数据库初创公司数量激增。我并不是来讨论其中任何一个的具体设计权衡。相反,我想回顾一下向量数据库是什么、它的用途以及如何使用它来解决问题的几种常见方法。

向量数据库不是内存

许多向量数据库将其基本用途定义为解决语言模型缺乏长期记忆的问题,或者解决您无法将问题的所有上下文放入提示中的问题。

https://trychroma.com/blog/seed

然而,向量搜索最终只是一种特殊的搜索为您的 LLM 提供对其可写入和搜索的数据库的访问权限非常有用,但最终最好的概念是为代理提供对搜索引擎的访问权限,而不是实际上“拥有更多内存”。

想象一下,您是一家想要构建由LLMs支持的文档体验的公司。如果您认为向量数据库只是为您的语言模型提供扩展的内存,那么您可能只需嵌入公司的所有产品文档,然后让用户向您的机器人提问。当用户按下回车键时,您会对他们的查询进行向量搜索,找到所有块,将它们加载到上下文中,然后让您的语言模型尝试回答问题。事实上,这就是我在 Stripe 开发他们的AI 文档产品时最初采用的方法。

但最终,我发现这种方法是死胡同。关键在于,虽然向量搜索在某些方面比传统搜索更好,但这并不神奇。就像常规搜索一样,您最终会在结果中得到不相关或丢失的文档。语言模型就像人类一样,只能使用他们拥有的东西,那些不相关的文档很可能会误导他们。

如果您想制作一个使用您的文档的优秀 RAG 工具,您应该首先为这些文档创建一个足以供人们自行使用的搜索引擎。这可能是您的组织之前考虑过的事情,如果它不存在,那是因为构建一个好的搜索引擎传统上是一项重大任务。

好消息

您已经坐下来决定建立良好的搜索,那么您实际上是如何做到的呢?事实证明,在这种情况下,LLMs实际上可以扭转局面。

尽管嵌入不是魔法棒,但仍然非常令人惊奇。高质量的嵌入搜索将比关键字搜索具有更低的误报率,并且将这两个结果结合起来比任何纯全文搜索的性能都要好得多(谷歌多年来一直在使用BERT来做到这一点)。然而,嵌入本身以及在大规模搜索中使用它们所需的工具都得到了突飞猛进的改进。有很多经过实战考验的数据库可以让您将关键字和向量搜索结合起来,我强烈建议使用其中之一(在 Elicit 中我们使用Vespa,但像 Chroma 这样的矢量数据库现在也通常支持这种方式)。

一旦您通过将嵌入与更传统的方法相结合来改进了整体搜索,您就会得到有趣的东西。一个精明的人试图通过搜索引擎查找信息,知道如何构建他们的查询,以确保他们找到相关信息(Google-fu 曾经是一种强大的艺术形式),语言模型也可以做到这一点。如果您的模型想要查找“有关疟疾疫苗的最新消息是什么”,您可以让语言模型构建一个包含日期过滤器的查询。这里有大量唾手可得的成果,之后可以进行几乎无穷无尽的调整,以产生令人难以置信的高质量搜索。与许多其他情况一样,在LLMs之前,类似的事情在世界上是可能的,但它们需要大量的专业技能和努力。现在,您只需花费几个小时的时间和一些计算即可获得具有竞争力的性能。

传统搜索流程的最后阶段是重新排名。过去的情况是,要进行重新排名,您需要根据信号训练相关性模型,例如用户在给定的搜索结果页面上单击哪些项目,然后使用该模型对热门结果进行排序。如果您不是一个围绕构建搜索引擎构建的整个团队,那么这不是一个可行的解决问题。现在,借助语言模型,您可以向模型提供有关查询:结果对的一些详细信息,并获得相关性分数,该分数将击败除最佳专用系统之外的所有系统。

最终,人工智能的最新进展使得构建尖端搜索变得更加容易,所需的工作量比以前少了几个数量级。正因为如此,坐下来认真建立良好的搜索的回报是非常高的。

如果您想构建基于 RAG 的工具,请首先构建搜索。

后记(坏消息)

您已经使用上述技术构建了一个不错的搜索引擎,现在是时候部署它了。不幸的是,语言模型无法让您避免构建搜索引擎的另一半:评估它。

具体来说,这意味着能够回答以下问题:

  • “什么时候进行搜索合适?”
  • “当您进行搜索时,您实际上想要查找什么内容?”
  • “该内容在您的结果中排名有多高?”

回答任何这些问题都需要构建评估和监控基础设施,您可以使用它来迭代搜索管道并了解您所做的更改是否有所改进。对于评估搜索引擎的后续内容,我推荐这一系列优秀的帖子。

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

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

相关文章

斯坦福CS231n学习笔记:DL与CV教程 (1) | 引言与知识基础

前言 📚 笔记专栏:斯坦福CS231N:面向视觉识别的卷积神经网络(23)🔗 课程链接:https://www.bilibili.com/video/BV1xV411R7i5💻 CS231n: 深度学习计算机视觉(2017&#xf…

设计3题目:各种排序算法及性能分析

1、设计3目的 掌握各种内排序算法设计及其执行绝对时间,并对其时间性能进行比较。 2、设计3正文 2.1 实验内容 内容:编写一个程序,随机产生n个1-99的正整数序列,分别采用直接插入排序、折半插入排序、希尔排序、冒泡排序、快速…

什么是MongoDB

概念: MongoDB 是一个文档数据库(以 JSON 为数据模型),由 C 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中…

白光LED驱动芯片的典型应用电路

小型白光LED驱动器LM2751 LM2751是美国国家半导体(NS)公司推出的一款小型白光LED驱动器,采用10PINLLP无铅封装,内置固定频率的电荷泵,在输入电压为2.8V~5.5V的情况下,可稳压输出4.5V或5.0V电压…

【树莓派】网线远程连接电脑和树莓派,实现SSH连接

目录 1、硬件连接; 2、电脑端: 3、查找树莓派的IP地址 4、开启树莓派的SSH接口 5、putty 6、命令行 参考文章 通过网线连接笔记本与树莓派 开启SSH和VNC功能 无显示器安装树莓派 实现:打开putty输入树莓派地址使用ssh方式登陆&…

【XR806开发板试用】单总线协议驱动DHT11温湿度传感器

1.昨天刚收到极速社区寄来的全志XR806开发板,之前用过很多全志的SOC芯片,但是像这种无线芯片还是第一次用。这次打算使用XR806芯片驱动一下DHT11温湿度传感器。 2.代码如下: #include "common/framework/platform_init.h" #inclu…

【计算机网络】TCP原理 | 可靠性机制分析(四)

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【网络编程】 本专栏旨在分享学习计算机网络的一点学习心得,欢迎大家在评论区交流讨论💌 这里写目录标题 &#x1…

软信天成:数据安全管理解决方案分享

近年来,随着数据环境日趋复杂多变和潜在的数据隐私泄露风险潜伏,如何确保企业数据安全已成为众多企业亟待面对与妥善处理的重要问题。 为了应对这一严峻的现实挑战,软信天成凭借专业的知识体系和丰富的实战经验积累,总结出了一套…

【web服务搭建实验】之nginx基础学习

目录 一、nginx的简介二、nginx安装实验虚拟主机的配置web服务器的主流实现方式-LAMP和LNMP 一、nginx的简介 Nginx是一款轻量级HTTP服务器,同时也是代理邮箱服务器,具备反向代理,通用代理的功能。支持多个系统,和不同操作系统。…

如何注释 PDF?注释PDF文件方法详情介绍

大多数使用 PDF 文档的用户都熟悉处理这种格式的文件时出现的困难。有些人仍然认为注释 PDF 的唯一方法是打印文档,使用笔或荧光笔然后扫描回来。 您可能需要向 PDF 添加注释、添加注释、覆盖一些文本或几何对象。经理、部门负责人在编辑公司内的合同、订单、发票或…

lvgl简介

LVGL(Light and Versatile Graphics Library)是一个开源的图形用户界面库,旨在提供轻量级、可移植、灵活和易于使用的图形用户界面解决方案。 它适用于嵌入式系统,可以在不同的操作系统、微控制器和图形加速器上运行。LVGL的核心…

power shell 有哪些常用命令?

PowerShell是一种命令行外壳和脚本语言,它基于.NET Framework并专为系统管理员设计。下面是一些常用的PowerShell命令: Get-Process:获取运行的进程列表。Get-Service:获取运行的服务列表。Get-EventLog:获取事件日志…

基于uniapp的在线课程教学系统

介绍 项目背景: 随着互联网的快速发展,在线教育已经成为一种流行的学习方式。针对这一趋势,我们决定开发一个基于UniApp的在线课程教学系统。该系统旨在为学生提供方便快捷的在线学习体验,同时也为教师提供一个高效管理课程的平台…

【java八股文】之计算机网络系列篇

1、TCP/IP和UDP模型 TCP/IP分层(4层):应用层,传输层,网络层,数据链路层 网络的七层架构 (7层):应用层,表示层,会话层,传输层&#xff…

M-A352AD10高精度三轴加速度计

一般描述 M-A352是一种三轴数字输出加速度计,具有超低噪声、高稳定性、低功耗等特点,采用了夸特的精细处理技术。. 多功能M-A352具有高精度和耐久性,非常适合广泛的具有挑战性的应用,如SHM、地震观测、工业设备的状态监测和工业…

面试题:说一下API网关的作用?企业如何应用API网关?

文章目录 一、API网关的用处1、Open API2、微服务网关3、API服务管理平台 二、API网关在企业架构中的地位三、企业中如何应用API网关四、API网关有哪些竞争方案五、API网关解决方案六、企业怎么选择API网关1、性能与可用性2、可扩展性、可维护性3、需求匹配度4、是否开源&#…

良心推荐!几款收藏的神级IDEA插件分享

本文已收录至Github,推荐阅读 👉 Java随想录 微信公众号:Java随想录 文章目录 CodeGlanceGsonFormatPOJO to JsonRainbow BracketsTranslationLombokMaven HelperAlibaba Java Code GuidelinesGenerateAllSetterMybatisXChinese (Simplified…

有哪些品牌的超声波清洗机是值得入手的?超声波清洗机推荐

作为一个既对生活品质有追求,又只想躺平的懒人,一直在努力尝试让轻松的生活少一点绊脚石,而其中最重要的一个,就是清洗眼镜清洗日常生活的一些小物件,讲真,洗这些东西有时候就跟下班回家的KPI一样。白天不累…

Linux 内核大转变:是否将迈入现代 C++ 的时代?

Linux开发者 H. Peter Anvin 在邮件列表中重启了关于 Linux内核C代码转换为C的讨论,并陈述了自己的观点。说之前先看一下这个话题的历史背景。 早在2018年4月1日,Andrew Pinski提议将 Linux 内核源码转为 C,在文中写道之所以引入是由于以下优…

安全生产管理平台——革新传统安全生产管理方式,重塑企业安全文化

安全生产管理在现代企业中占据着至关重要的地位。传统的安全生产管理方式虽然在一定程度上能够保障企业的生产安全,但随着企业规模的不断扩大和生产环境的日益复杂,其局限性也愈发凸显。而安全生产管理平台的出现,正是为了解决这一问题。 平台…