当前位置: 首页 > news >正文

【PGCCC】pg_bestmatch.rs:使用 BM25 提升您的 PostgreSQL 文本查询#PCA

这是一个 PostgreSQL 扩展,它将最佳匹配 25 分数 (BM25) 文本查询的强大功能引入您的数据库,从而增强您执行高效和准确的文本检索的能力。此扩展允许用户从文本生成 BM25 统计稀疏向量,利用 BM25 在各种基准测试任务中经过验证的性能。

为什么是 BM25?

BM25(最佳匹配 25)是信息检索中使用的概率排名函数,用于评估文档与查询的匹配程度。它根据词频 (TF) 和逆文档频率 (IDF) 计算相关性分数,并通过文档长度规范化来平衡这些分数。该公式可确保在文档中频繁出现的术语 (TF) 和在语料库中罕见的术语 (IDF) 具有适当的权重,从而提高搜索的准确性和相关性。
在这里插入图片描述
BM25 在众多RAG 基准测试任务中已被证明优于基于密集向量的检索方法。通过将 BM25 集成到 PostgreSQL,您可以实现卓越的搜索性能和相关性,尤其是对于需要高质量文本检索的应用程序。您还可以将其与向量搜索结合使用,作为混合搜索集成。

主要特点

  • BM25统计稀疏向量:根据自己的文本数据为文本生成BM25稀疏向量。
  • 与向量搜索扩展集成:兼容pgvecto.rs并pgvector用于 PostgreSQL 中的高效向量搜索。
  • 无缝标记化:利用 Huggingface 的bert-base-uncased词汇表和字节对编码 (BPE)
    标记器,通过子词标记化提高性能

它是如何工作的?

在这里插入图片描述

BM25 计算可以分解为查询和文档的独立部分。最终相关性得分计算为查询的稀疏向量与文档的稀疏向量之间的点积。因此,我们将 BM25 转换为具有点积距离的稀疏向量检索问题!

用法

以下是其工作原理的逐步概述:

  1. 创建 BM25 统计信息:使用该bm25_create函数为您的文档集生成 BM25
    统计信息。此函数以表名、列名和统计信息名称作为参数,并创建一个物化视图来存储 BM25 统计信息。
 SELECT bm25_create('documents', 'passage', 'documents_passage_bm25');
  1. 生成文档稀疏向量:使用该函数将文档文本转换为稀疏向量表示bm25_document_to_svector。此函数将 BM25 统计名称和文档文本作为输入。
 SELECT bm25_document_to_svector('documents_passage_bm25', 'document_text') as document_vector;
  1. 生成查询稀疏向量:对于每个搜索查询,使用该函数生成相应的稀疏向量bm25_query_to_svector。此函数还将 BM25 统计名称和查询文本作为输入。
 SELECT bm25_query_to_svector('documents_passage_bm25', 'search_query') as query_vector;
  1. 计算相关性分数:通过对查询稀疏向量和文档稀疏向量进行点积运算,计算给定查询的文档相关性分数。此分数表示文档与查询的匹配程度。
 SELECT document_id, (query_vector <#> document_vector) AS bm25_scoreFROM documentsORDER BY bm25_scoreLIMIT 10;

#PCP#PCA#postgresql培训#postgresql考试#postgresql认证

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Windows下添加开机启动项
  • Vue.js 中的指令(Vue自定义指令)
  • 在小程序添加公司官网访问
  • 使用 Vue 2 搭建后台管理系统
  • 学习计算机网络(五)——ICMP协议
  • 仕考网:考外省公务员可以调回本地吗?
  • 保研考研机试攻略:第三章——数学(2)
  • uView的u-notice-bar组件横向滚动不生效问题解决
  • 《AI视频类工具之八——​ 快剪辑》
  • Android 使用 PatternsCompat.EMAIL_ADDRESS 判断邮箱、IP地址、域名格式是否正确
  • 基于SpringBoot框架的能源管理系统源代码(100%开源无加密)
  • Linux系统之部署轻量级Markdown文本编辑器
  • 来了...腾讯内推的软件测试面试PDF 文档(共107页)
  • AOP实现日志记录需求
  • 【Python】 Python Schedule 模块:轻量级的定时任务调度库
  • 2018一半小结一波
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • export和import的用法总结
  • gf框架之分页模块(五) - 自定义分页
  • input实现文字超出省略号功能
  • js 实现textarea输入字数提示
  • Nacos系列:Nacos的Java SDK使用
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • python docx文档转html页面
  • React-flux杂记
  • Spring-boot 启动时碰到的错误
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 力扣(LeetCode)357
  • 两列自适应布局方案整理
  • 前端攻城师
  • 前端技术周刊 2019-01-14:客户端存储
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 入门级的git使用指北
  • 译自由幺半群
  • 原生Ajax
  • 走向全栈之MongoDB的使用
  • elasticsearch-head插件安装
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​​​【收录 Hello 算法】10.4 哈希优化策略
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (ibm)Java 语言的 XPath API
  • (ISPRS,2021)具有遥感知识图谱的鲁棒深度对齐网络用于零样本和广义零样本遥感图像场景分类
  • (多级缓存)缓存同步
  • (二)Eureka服务搭建,服务注册,服务发现
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (七)glDrawArry绘制
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (算法)求1到1亿间的质数或素数
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • .net 8 发布了,试下微软最近强推的MAUI