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

【拥抱AI】向量数据库有哪些常见的检索算法?

在信息检索领域,有许多常见的算法用于帮助用户从大量数据中找到相关的信息。以下是一些常见的检索算法:

布尔模型示例(文本操作)

在文本操作中,布尔模型可以通过编写一个简单的脚本来实现。例如,你可以创建一个包含多个文档的文本文件,然后编写一个脚本来搜索包含特定关键词的文档。

# 布尔模型示例
# 假设我们有以下文档
documents = ["苹果手机 苹果手机价格","苹果手机介绍","华为手机介绍","小米手机介绍"
]
# 用户查询
query = "苹果手机"
# 布尔模型搜索
results = []
for document in documents:if query in document:results.append(document)
print(results)

向量空间模型示例(文本操作)

在向量空间模型中,你可以使用Python的nltk库来计算文档和查询的向量表示,并计算它们的相似度。

from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
from nltk.probability import FreqDist
from nltk.util import ngrams
from sklearn.feature_extraction.text import TfidfVectorizer
# 假设我们有以下文档
documents = ["苹果手机 苹果手机价格","苹果手机介绍","华为手机介绍","小米手机介绍"
]
# 用户查询
query = "苹果手机"
# 文本预处理
def preprocess_text(text):stop_words = set(stopwords.words('english'))words = word_tokenize(text.lower())return [word for word in words if word not in stop_words]
# 计算TF-IDF向量
vectorizer = TfidfVectorizer(preprocessor=preprocess_text)
tfidf_matrix = vectorizer.fit_transform(documents + [query])
# 计算相似度
cosine_similarities = tfidf_matrix * tfidf_matrix.T
# 返回相似度最高的文档
results = cosine_similarities.toarray()
print(results)

倒排索引示例(文本操作)

在倒排索引中,你可以使用Python的collections模块来创建一个简单的倒排索引。

from collections import defaultdict
# 假设我们有以下文档
documents = ["苹果手机 苹果手机价格","苹果手机介绍","华为手机介绍","小米手机介绍"
]
# 创建倒排索引
inverted_index = defaultdict(list)
for document in documents:words = document.split()for word in words:inverted_index[word].append(document)
# 打印倒排索引
print(inverted_index)

基于词频-逆文档频率(TF-IDF)的检索:

*** 基于词频-逆文档频率(TF-IDF)的检索是一种常用的文本信息检索技术,它通过计算词的TF-IDF值来衡量词的重要性,并据此对文档进行排序。TF-IDF算法的基本思想是,如果一个词在某个文档中出现的频率较高(词频,Term Frequency,TF),并且在整个文档集合中出现的频率较低(逆文档频率,Inverse Document Frequency,IDF),那么这个词对于这个文档的贡献较大,应该被赋予较高的权重。

计算步骤
  1. 词频(TF)计算
    • 对于文档中的每个词,计算它在文档中出现的次数。
  2. 逆文档频率(IDF)计算
    • 计算整个文档集合中包含这个词的文档数。
    • 计算文档总数。
    • 计算IDF值,公式为:[ IDF = \log_2 \frac{文档总数}{包含这个词的文档数} ]
  3. TF-IDF计算
    • 对于文档中的每个词,计算它的TF-IDF值,公式为:[ TF-IDF = TF \times IDF ]
  4. 文档向量表示
    • 将文档中每个词的TF-IDF值作为文档向量的一个维度。
  5. 相似度计算
    • 使用余弦相似度等方法计算查询向量与文档向量之间的相似度。
    • 返回相似度最高的文档。
示例说明

假设我们有一个包含以下文档的文档集合:

文档1: 苹果手机 苹果手机价格
文档2: 苹果手机介绍
文档3: 华为手机介绍
文档4: 小米手机介绍

用户查询为“苹果手机”。

  1. 词频(TF)计算
    • 在文档1中,“苹果手机”出现了2次,TF值为2。
    • 在文档2中,“苹果手机”出现了1次,TF值为1。
    • 在文档3和文档4中,“苹果手机”没有出现,TF值为0。
  2. 逆文档频率(IDF)计算
    • 在文档集合中,包含“苹果手机”的文档数为2(文档1和文档2)。
    • 文档总数为4。
    • IDF值为 [ \log_2 \frac{4}{2} = \log_2 2 = 1 ]
  3. TF-IDF计算
    • 在文档1中,“苹果手机”的TF-IDF值为 [ 2 \times 1 = 2 ]
    • 在文档2中,“苹果手机”的TF-IDF值为 [ 1 \times 1 = 1 ]
    • 在文档3和文档4中,“苹果手机”的TF-IDF值为0。
  4. 文档向量表示
    • 文档1的向量为 [2, 0, 0, 0]。
    • 文档2的向量为 [1, 0, 0, 0]。
    • 文档3和文档4的向量为 [0, 0, 0, 0]。
  5. 相似度计算
    • 假设查询向量为 [1, 0, 0, 0]。
    • 计算文档1和查询之间的余弦相似度为 [ \frac{2}{2} = 1 ]
    • 计算文档2和查询之间的余弦相似度为 [ \frac{1}{2} = 0.5 ]
    • 文档3和文档4与查询之间的余弦相似度为0。
  6. 返回结果
    • 基于余弦相似度,文档1与查询最相关,其次是文档2。

这些示例展示了这些算法在实际应用中的具体操作和效果。在实际的信息检索系统中,可能会根据具体需求和场景选择合适的算法或算法组合。

相关文章:

【拥抱AI】向量数据库有哪些常见的检索算法?

在信息检索领域,有许多常见的算法用于帮助用户从大量数据中找到相关的信息。以下是一些常见的检索算法: 布尔模型示例(文本操作) 在文本操作中,布尔模型可以通过编写一个简单的脚本来实现。例如,你可以创…...

Webpack前端工程化进阶系列(二) —— HMR热模块更新(图文+代码)

前言 之前更新过一篇Webpack文章:Webpack入门只看这一篇就够了(图文代码),没想到颇受好评,很快就阅读量就破万了hhh,应读者私信的要求,决定继续更新Webpack进阶系列的文章! 进入今天的主题 —— HMR 热模块替换(HotM…...

【RAG 项目实战 07】替换 ConversationalRetrievalChain(单轮问答)

【RAG 项目实战 07】替换 ConversationalRetrievalChain(单轮问答) NLP Github 项目: NLP 项目实践:fasterai/nlp-project-practice 介绍:该仓库围绕着 NLP 任务模型的设计、训练、优化、部署和应用,分享大…...

godot游戏引擎_瓦片集和瓦片地图介绍

在 Godot 中,TileSet 和 TileMap 是用于处理瓦片地图的两个关键概念,它们的作用和用途有明显的区别。以下是两者的详细对比: 1. TileSet(瓦片集) TileSet 是资源,定义瓦片的内容和属性。 特点&#xff1a…...

7、深入剖析PyTorch nn.Module源码

文章目录 1. 重要类2. add_modules3. Apply(fn)4. register_buffer5. nn.Parametersister_parameters6. 后续测试 1. 重要类 nn.module --> 所有神经网络的父类,自定义神经网络需要继承此类,并且自定义__init__,forward函数即可: #!/usr…...

如何提升编程能力第二篇

如何提升编程能力2 1. 引言2. 掌握理论基础2.1 理解编程语言的核心2.2 数据结构与算法2.3 计算机基础与系统设计3.1 多写代码3.2 参与开源项目3.3 开发自己的项目 4. 提高代码质量4.1 代码风格与可读性4.2 测试驱动开发 1. 引言 编程是推动现代科技发展的核心技能,…...

问:SpringBoot核心配置文件都有啥,怎么配?

在SpringBoot的开发过程中,核心配置文件扮演着至关重要的角色。这些文件用于配置应用程序的各种属性和环境设置,使得开发者能够灵活地定制和管理应用程序的行为。本文将探讨SpringBoot的核心配置文件,包括它们的作用、区别,并通过…...

RHCSA作业

课后练习 将整个 /etc 目录下的文件全部打包并用 gzip 压缩成/back/etcback.tar.gz [rootlocalhost ~]# tar -czvf /back/etcback.tar.gz -C / etc 使当前用户永久生效的命令别名:写一个命令命为hello,实现的功能为每输入一次hello命令,就有hello&#…...

ESP32学习笔记_FreeRTOS(3)——SoftwareTimer

摘要(From AI): 这篇笔记全面介绍了 FreeRTOS 软件定时器的核心概念和使用方法,包括定时器的创建、管理、常用 API 和辅助函数,并通过示例代码演示了如何启动、重置和更改定时器的周期。它强调了软件定时器的灵活性、平台无关性以及与硬件定时器的对比 …...

文心一言与千帆大模型平台的区别:探索百度AI生态的双子星

随着人工智能技术的迅猛发展,越来越多的公司开始投入资源开发自己的AI解决方案。在中国,百度作为互联网巨头之一,不仅在搜索引擎领域占据重要位置,还在AI领域取得了显著成就。其中,“文心一言”和“千帆大模型平台”便…...

【c语言】文件操作详解 - 从打开到关闭

文章目录 1. 为什么使用文件?2. 什么是文件?3. 如何标识文件?4. 二进制文件和文本文件?5. 文件的打开和关闭5.1 流和标准流5.1.1 流5.1.2 标准流 5.2 文件指针5.3 文件的打开和关闭 6. 文件的读写顺序6.1 顺序读写函数6.2 对比一组…...

Flink Sink的使用

经过一系列Transformation转换操作后,最后一定要调用Sink操作,才会形成一个完整的DataFlow拓扑。只有调用了Sink操作,才会产生最终的计算结果,这些数据可以写入到的文件、输出到指定的网络端口、消息中间件、外部的文件系统或者是…...

pcl::PointCloud<PointType>::Ptr extractedCloud; 尖括号里的值表示什么含义?

在C中&#xff0c;pcl::PointCloud<PointType>::Ptr是一种智能指针&#xff0c;它是Point Cloud Library (PCL)中用于管理pcl::PointCloud对象的智能指针类型。这里的<pcl::PointCloud<PointType>::Ptr>尖括号里的值表示智能指针所指向的对象类型。 让我们分…...

《基于FPGA的便携式PWM方波信号发生器》论文分析(三)——数码管稳定显示与系统调试

一、论文概述 基于FPGA的便携式PWM方波信号发生器是一篇由任青颖、庹忠曜、黄洵桢、李智禺和张贤宇 等人发表的一篇期刊论文。该论文主要研究了一种新型的信号发生器&#xff0c;旨在解决传统PWM信号发生器在移动设备信号调控中存在的精准度低和便携性差的问题 。其基于现场可编…...

VsCode 插件推荐(个人常用)

VsCode 插件推荐&#xff08;个人常用&#xff09;...

路由策略与路由控制实验

AR1、AR2、AR3在互联接口、Loopback0接口上激活OSPF。AR3、AR4属于IS-IS Area 49.0001&#xff0c;这两者都是Level-1路由器&#xff0c;AR3、AR4的系统ID采用0000.0000.000x格式&#xff0c;其中x为设备编号 AR1上存在三个业务网段A、B、C&#xff08;分别用Loopback1、2、3接…...

训练的decoder模型文本长度不一致,一般设置为多大合适,需要覆盖最长的文本长度么

在训练解码器模型时,文本长度不一致是常见的情况,需要根据任务的特性和数据集的长度分布来设置合理的最大长度 (max_length)。以下是一些指导原则,帮助你设置合适的最大长度: 1. 是否需要覆盖最长文本长度 覆盖最长文本长度: 如果任务对完整性要求很高(例如生成数学公式、…...

过滤条件包含 OR 谓词,如何进行查询优化——OceanBase SQL 优化实践

这篇博客涉及两个点&#xff0c;一个是 “OR Expansion 改写”&#xff0c;另一个是 “基于代价的改写”。 背景 在写SQL查询时&#xff0c;难以避免在过滤条件中使用 OR 谓词&#xff0c;但其往往会导致索引利用效率下降的问题 。本文将分享如何通过查询改写的2种方式进行优化…...

通过异步使用消息队列优化秒杀

通过异步使用消息队列优化秒杀 同步秒杀流程异步优化秒杀异步秒杀流程基于lua脚本保证Redis操作原子性代码实现阻塞队列的缺点 同步秒杀流程 public Result seckillVoucher(Long voucherId) throws InterruptedException {SeckillVoucher seckillVoucher iSeckillVoucherServi…...

AI产业告别“独奏”时代,“天翼云息壤杯”高校AI大赛奏响产学研“交响乐”

文 | 智能相对论 作者 | 陈泊丞 人工智能产业正在从“独奏”时代进入“大合奏”时代。 在早期的AI发展阶段&#xff0c;AI应用主要集中在少数几个领域&#xff0c;如语音识别、图像处理等。这些领域的研究和开发工作往往由少数几家公司或研究机构即可独立完成&#xff0c;犹…...

WechatDecrypt技术实现:如何通过开源工具实现微信数据本地解密与隐私保护

WechatDecrypt技术实现&#xff1a;如何通过开源工具实现微信数据本地解密与隐私保护 【免费下载链接】WechatDecrypt 微信消息解密工具 项目地址: https://gitcode.com/gh_mirrors/we/WechatDecrypt 在数字化时代&#xff0c;数据隐私保护已成为技术开发者和普通用户共…...

MCP协议实践:构建AI助手与IDE间的通信中继

1. 项目概述&#xff1a;IDE与AI助手间的“通信中继”最近在折腾AI编程助手时&#xff0c;发现一个挺有意思的痛点&#xff1a;像Cursor、Claude Desktop这类IDE插件或独立应用&#xff0c;它们内置的AI助手能力很强&#xff0c;但很多时候我们希望能让它们访问到IDE之外的一些…...

教育云平台数据泄露与网络钓鱼风险防控研究—— 基于牛津大学 Canvas 安全事件的分析

摘要 教育数字化转型背景下&#xff0c;云学习管理平台的数据安全与风险防控已成为全球高校共同面临的挑战。2026 年 5 月&#xff0c;全球主流教育云平台 Canvas 发生大规模未授权访问事件&#xff0c;牛津大学等多所高校用户数据遭泄露&#xff0c;核心风险直指数据泄露后的…...

避开BUUCTF《Life on Mars》的思维陷阱:当information_schema查询结果‘不对劲’时,你的排查清单应该有哪些?

破解BUUCTF《Life on Mars》的数据库迷局&#xff1a;当information_schema说谎时的七种侦查策略 在CTF赛场上&#xff0c;SQL注入类题目往往不会按教科书上的剧本发展。当你在BUUCTF《Life on Mars》这道题中执行group_concat(database()) from information_schema.schemata却…...

(5月最新版)OpenClaw 小龙虾 Windows 一键安装与问题排查

OpenClaw&#xff08;小龙虾&#xff09;Windows 11 一键部署教程&#xff5c;2026 新版&#xff5c;零代码・免配置・解压即用 适用系统&#xff1a;Windows 11 专业版 / 家庭版 / 正式版&#xff08;全版本兼容&#xff09;当前版本&#xff1a;v2.7.1 下载地址&#xff1a;…...

Exclusively Dark数据集:破解低光照视觉难题的7363张真实图像基准

Exclusively Dark数据集&#xff1a;破解低光照视觉难题的7363张真实图像基准 【免费下载链接】Exclusively-Dark-Image-Dataset Exclusively Dark (ExDARK) dataset which to the best of our knowledge, is the largest collection of low-light images taken in very low-li…...

洛谷 P1305:新二叉树 ← DFS + 字符索引数组 + map

​【题目来源】 https://www.luogu.com.cn/problem/P1305 【题目描述】 输入一串二叉树&#xff0c;输出其前序遍历。 【输入格式】 第一行为二叉树的节点数 n。(1≤n≤26) 后面 n 行&#xff0c;第一个字母为节点&#xff0c;后两个字母分别为其左右儿子。特别地&#xff0c…...

工程师如何运用专业技能参与人道主义项目:从思维转变到实践落地

1. 项目概述&#xff1a;工程师的人道主义行动倡议每年8月19日&#xff0c;世界人道主义日都会提醒我们关注那些在全球最艰苦、最危险地区默默奉献的人们。这个日子最初是为了纪念在履职中牺牲的人道主义工作者&#xff0c;如今已演变为一个更广泛的号召——庆祝那种激励全球人…...

5大核心功能揭秘:GTA5线上小助手如何彻底改变你的洛圣都冒险体验

5大核心功能揭秘&#xff1a;GTA5线上小助手如何彻底改变你的洛圣都冒险体验 【免费下载链接】GTA5OnlineTools GTA5线上小助手 项目地址: https://gitcode.com/gh_mirrors/gt/GTA5OnlineTools 你是否厌倦了在GTA5线上模式中花费数小时完成重复任务&#xff1f;是否希望…...

芯片测试中的扫描压缩技术解析与应用

1. 扫描压缩技术概述在当今纳米级芯片设计中&#xff0c;扫描压缩技术已成为降低测试成本、保证测试质量的必备手段。随着芯片复杂度呈指数级增长&#xff0c;传统扫描测试方法面临两大核心挑战&#xff1a;测试数据量&#xff08;Test Data Volume&#xff09;爆炸式增长导致测…...