向量数据库是如何工作的?
Scrapeless Web Unlocker 获取网页内容,以便为单独管理的向量索引和检索流水线提供数据。
向量数据库存储带有标识符和关联数据的向量表示,然后在选定度量下检索那些向量与查询向量接近的记录。嵌入模型定义表示方式;数据库负责管理存储和搜索。这两个组件都无法单独判断检索到的段落是否是最新的、是否被授权,或是否足以回答一个问题。
实际挑战在于维护表示与其来源之间的可信连接。数据库可以正确返回其最近的记录,而应用程序却可能基于错误的产品版本或已删除的文档作出回答。因此,要理解向量数据库的工作方式,就必须在摄取、索引、查询、过滤以及变更管理的整个过程中追踪记录。
向量记录中实际存储的是什么?
向量记录将数值数组与一个稳定标识符以及解释该数组所需的信息关联起来。根据系统的不同,段落文本可能存储在数据库中,或存储在单独的文档仓库中。元数据可以标识源文档、租户、语言、版本和访问范围。在构建摄取流程之前,先确定每个字段由哪个系统负责。
一个标识符应当能够在普通的处理变更中保持稳定,而不会意外地将不相关的记录合并在一起。内容版本则应当区分对同一来源的不同观测。以一个假设的政策手册为例,文档键用来标识这本手册,而段落键用来标识某个派生单元及其版本。如果源文本和向量是分开存储的,那么它们之间的引用在更新和删除的整个过程中都必须保持有效。
数据库如何查找附近的向量?
最近邻搜索使用指定的距离或相似度度量,将查询向量与已存储向量进行比较。精确扫描会直接评估所有候选向量。近似索引通过组织向量来减少搜索工作,使查询只需检查一个更有希望的子集。近似会在搜索工作量与可能错过更接近的记录之间进行权衡。
The HNSW 索引方法 使用分层近邻图结构来导航并定位候选邻居。它是一种索引设计,而不是对所有向量数据库的统一定义。不要因为系统宣称支持向量搜索,就假定所有系统在更新行为、过滤语义或内存需求方面完全相同。应阅读具体实现的实际行为,并针对目标语料进行测试。
| 层 | 责任 | 常见的错误假设 |
|---|---|---|
| 嵌入模型 | 创建兼容表示形式 | 数据库会自行创造意义 |
| 向量索引 | 查找附近的候选记录 | 近似搜索总能找到精确邻居 |
| 元数据过滤 | 限制符合条件的记录 | 相似性强制权限 |
| 应用程序 | 恢复证据并生成答案 | 向量结果是经过验证的答案 |
从问题到检索到的段落,会发生什么?
查询应用首先按照其嵌入模型所需的格式准备输入。它对查询进行编码,连同相关过滤条件一起提交向量,检索候选标识符及其相关值,并获取用户或回答模型所需的段落。可选的重排序步骤可以对这些候选再次进行相关性测试。
The 检索增强生成架构 将检索与生成分离。向量查询本身并不是生成的答案。如果答案模型在收到正确段落后编造了细节,那么这个失败属于下游问题。如果候选集合中缺少相关段落,应先在修改答案提示词之前,调查摄取、表示、过滤和检索过程。
为什么元数据筛选很重要?
元数据过滤器会限制可参与结果的记录。它们对于租户隔离、文档类型、产品版本以及其他显式约束非常有用。仅依靠相似度无法强制执行这些要求。关于其他客户配置的段落在语义上可能非常接近,但返回这样的结果仍然是不可接受的。
过滤行为因系统和查询方案而异。 pgvector 实现 文档的精确和近似搜索以及数据库过滤方面的考量。应评估过滤器与索引的实际组合,而不是假设某个强大的未过滤基准适用于一个狭窄的租户查询。在向模型暴露证据之前,必须先满足访问规则要求,并且在所需元数据缺失时,检索系统应以安全失败的方式运行。
如何保持源内容与向量一致?
向量的新鲜度需要对源文本、元数据以及派生表示进行协调更新。已更改的段落通常需要在所选模型下生成匹配的新嵌入。被删除的源文档需要为其段落、缓存结果以及任何单独保存的文本副本提供明确的删除路径。定义权威版本,而不是仅依赖采集时间。
The 无痕网页解锁器 可以提供获取步骤,而你的系统负责规范化和索引生命周期。 全新的向量数据库流水线 连接这些阶段。在允许的情况下保留原始捕获,这样当出现错误答案时,可以追溯到源内容缺失、抽取丢失、过期向量或查询不匹配等原因。
你应该如何评估一个索引?
根据已知的检索基线和任务级相关性评估近似索引。对相同向量进行精确搜索有助于识别由近似引入的损失。人工审查的查询-段落对有助于判断嵌入空间本身是否检索到有用的证据。这些是不同的测试,可能会产生不同的结论。
包括限制性过滤器、重复文档、已更改版本以及没有支持答案的查询。在每次评估中记录语料库版本、模型配置、索引配置和查询输入。一个快速查询如果返回了未授权的段落,即使其相似度得分很高,也视为失败。如果某个较慢的配置在满足相关性和操作约束方面对该工作负载更为一致,则可能更为合适。
向量数据库在何种情况下是合适的工具?
当基于相似度的检索需要持久化存储、过滤、更新以及在所需的运维规模上提供查询服务时,向量数据库就会变得有用。一个小型原型可以从将向量保存在内存中或作为数据库扩展开始。只有当一个独立服务的功能和运行模型能够解决实际需求时,它才会真正产生价值。
对于诸如精确账户标识符或当前合约状态等需求,请使用普通的结构化查询。对于具有决定性意义的精确名称和错误代码,请使用词汇匹配。在评估表明单一方法无法检索到必要证据时,结合搜索方法使用。应用程序可以合并候选结果并对其进行排序,但每个额外阶段都应具有明确定义的职责和可度量的贡献。
运营审查应提出哪些问题?
运营评审应询问记录是如何进入、变化、消失以及对读者变得可见的。检查持久性、恢复能力、身份边界、可观测性,以及检查已检索文本的能力。请求追踪应使人能够在不暴露不必要敏感信息的前提下,重建是哪一版本的语料和哪些过滤条件生成了某个回答。
对于一个假设的迁移,应单独构建替换表示,对两个版本运行相同的评估查询,并且只在验收标准通过后才切换查询路径。保持一条有文档记录的回滚路径,并在过渡期间决定更新如何到达这两个版本。这样可以避免出现混合表示空间,即旧的文档向量和新的查询向量产生看似有效但没有共同语义的排序结果。
当结果已被删除时会发生什么?
已删除结果用于测试数据库和应用程序在记录生命周期上的一致性。系统应根据其已记录的删除行为,停止通过向量查询、直接标识符查找、缓存检索以及任何单独的文本存储返回该记录。面向用户的删除承诺应基于这些受支持的访问路径,而不是仅仅依赖删除请求成功与否。
对于一个假设的知识库,文档所有者可能会删除一项已过时的策略,而此时后台摄取作业队列中仍然保留着较早抓取的旧版本。如果没有版本检查,该作业可能会重新创建已被删除的内容。需要定义删除标记、源版本和摄取顺序之间如何交互,以确保延迟到达的更新无法在无提示的情况下恢复已撤回的内容。
在删除之后,还要测试一个更窄的元数据过滤器。一个集合在不受限制的查询中看起来可能是健康的,同时仍在某个租户或文档组内保留了一条意外记录。要保留足够的审计证据,以识别被移除的来源及其派生记录,同时遵守组织的保留规则。这些检查属于运行正确性问题,而不仅仅是相关性调优。一个有用的近邻搜索服务必须返回既相关又仍然有资格存在于活动语料库中的记录。
结论
向量数据库通过存储表征并返回附近的符合条件记录来工作。有效的检索依赖于兼容的嵌入、合适的索引、精确的过滤条件,以及与数据源保持一致的更新。分别测试这些职责,然后评估应用实际使用到的段落。基于这些证据来选择基础设施,而不是将向量存储视为一个完整的知识系统。
保持你的检索来源最新
为由你的应用程序控制的版本化摄取管道获取源页面。
今天注册即可获得 5 美元免费额度 — 无需信用卡.
领取您的 $5 额度 →常见问题解答
每个向量数据库都是近似的吗?
向量数据库可以支持精确搜索、近似搜索,或两者兼有。可用的方法取决于具体实现。应基于经过测量的相关性、延迟和运行需求来选择方法,而不是想当然地认为近似搜索总是必要的。
向量数据库可以生成嵌入吗?
有些系统集成了嵌入生成,而其他系统则期望从你的应用程序接收向量。即使由同一服务同时提供,两者的存储与表示仍然是各自独立的职责。请跟踪模型配置,以确保已存储文档与查询保持兼容。
最近的结果是否总是回答了这个问题?
最近的结果不一定能回答问题。它只是所选表示方式和搜索方法下最接近的合格候选项。请检查源支持,并明确当没有合适候选项时应用程序应执行的操作。
原始文本是否应该保留?
应保留原始文本或可靠的版本化参考。用户和回答模型需要可读的证据,而维护人员需要一种方式来更新、检查和删除从每个来源派生的记录。