Elasticsearch:语义搜索、知识图和向量数据库概述

news2025/2/5 5:50:38
结合对你自己的私有数据执行语义搜索的概述

 

什么是语义搜索?

语义搜索是一种使用自然语言处理算法来理解单词和短语的含义和上下文以提供更准确的搜索结果的搜索技术。 这种方法基于这样的想法:搜索引擎不仅应该匹配查询中的关键字,还应该尝试理解用户搜索的意图以及所使用的单词之间的关系。

语义搜索旨在超越传统的基于关键字的搜索算法,通过使用实体识别、概念匹配和语义分析等技术来识别单词、短语和概念之间的关系。 它还考虑同义词、相关术语和上下文,以提供更相关的搜索结果。

总体而言,语义搜索旨在提供更精确、更有意义的搜索结果,更好地反映用户的意图,而不仅仅是匹配关键字。 这使得它对于复杂的查询特别有用,例如与科学研究、医疗信息或法律文档相关的查询。

语义搜索的历史

语义搜索的概念可以追溯到计算机科学的早期,在 20 世纪 50 年代和 1960 年代就有人尝试开发自然语言处理系统。 然而,直到 20 世纪 90 年代和 2000 年代,语义搜索领域才取得了重大进展,这在一定程度上要归功于机器学习和人工智能的进步。

语义搜索最早的例子之一是 Douglas Lenat 在 1984 年创建的 Cyc 项目。 该项目旨在建立一个全面的常识知识本体或知识库,可用于理解自然语言查询。 虽然Cyc项目面临诸多挑战,最终没有实现其目标,但它为未来语义搜索的研究奠定了基础。

20 世纪 90 年代末,Ask Jeeves(现称为 Ask.com)等搜索引擎开始尝试自然语言查询和语义搜索技术。 这些早期的努力受到当时技术的限制,但它们展示了更复杂的搜索算法的潜力。

2000 年代初 Web 本体语言 (OWL) 的发展提供了一种以机器可读格式表示知识和关系的标准化方法,使得开发语义搜索算法变得更加容易。 2008 年被微软收购的 Powerset 和 2007 年推出的 Hakia 等公司开始使用语义搜索技术来提供更相关的搜索结果。

如今,许多搜索引擎和公司正在使用语义搜索来提高搜索结果的准确性和相关性。 其中包括于 2012 年推出知识图谱的谷歌,以及使用语义搜索为其 Alexa 虚拟助手提供支持的亚马逊。 随着人工智能领域的不断发展,语义搜索可能会变得更加复杂且适用于广泛的应用。

语义搜索的最新改进

语义搜索最近出现了一些改进,有助于进一步推动该领域的发展。 一些最值得注意的包括:

  1. 基于 Transformer 的模型:基于 Transformer 的模型,例如 BERT(来自 Transformers 的双向编码器表示),彻底改变了自然语言处理和语义搜索。 这些模型能够更好地理解单词和短语的上下文,从而更容易提供更相关的搜索结果。
  2. 多模态搜索:多模态搜索是指跨文本、图像、视频等多种模式搜索信息的能力。 机器学习的最新进展使得开发更准确、更复杂的多模态搜索算法成为可能。
  3. 对话式搜索:对话式搜索涉及使用自然语言处理和机器学习来为用户查询提供更准确、更人性化的响应。 这项技术已经被用于虚拟助手,例如亚马逊的 Alexa 和苹果的 Siri。
  4. 个性化:个性化是指根据用户的偏好和之前的搜索历史来定制搜索结果的能力。 随着在线可用数据量的不断增长,这一点变得越来越重要。
  5. 特定领域搜索:特定领域搜索涉及使用语义搜索技术在特定领域或行业(例如医疗保健或金融)内进行搜索。 这有助于为这些行业的用户提供更准确、更相关的搜索结果。

总体而言,语义搜索的最新进展使得在线查找信息变得更加容易,并为未来更复杂的搜索算法铺平了道路。

语义搜索和知识图谱有什么关系?

语义搜索和知识图(knowledge graph)密切相关,因为两者都涉及使用语义技术来改进搜索结果。

知识图是一种结构化的信息数据库,它使用语义技术以机器可读的格式表示知识。 它通常由实体(例如人、地点和事物)以及它们之间的关系组成。 例如,知识图可能包含有关特定公司的信息,包括其位置、产品和员工以及这些实体之间的关系。

另一方面,语义搜索是一种使用自然语言处理和机器学习来更好地理解搜索查询中单词和短语的含义的搜索技术。 语义搜索算法使用知识图和其他语义技术来分析实体和概念之间的关系,并基于此分析提供更相关的搜索结果。

换句话说,知识图为语义搜索算法提供了底层结构和数据。 通过利用知识图提供的关系和上下文,语义搜索算法能够提供更准确、更有意义的搜索结果,更好地匹配用户的意图。

例如,谷歌的知识图使用庞大的结构化数据数据库来支持其搜索结果,并提供有关搜索结果中出现的实体(例如人物、地点和事物)的附加信息。 这使得用户更容易找到他们正在寻找的信息并探索相关的概念和实体。

矢量数据库、知识图谱和语义搜索

矢量数据库是另一种可以与语义搜索和知识图结合使用以改进搜索结果的技术。

矢量数据库使用机器学习算法将数据表示为矢量,矢量是数据的数学表示,可用于各种计算任务,例如相似性搜索、聚类和分类。 这些矢量可用于以允许更准确和高效处理的方式表示实体、概念和其他类型的数据。

在语义搜索和知识图的背景下,矢量数据库可以通过更好地理解实体和概念之间的关系来提高搜索结果的准确性。 例如,矢量可用于表示人、地点和事物等实体以及它们之间的关系。 通过比较这些矢量,搜索算法可以识别数据本身可能无法立即显现的关系和模式。

例如,当用户搜索 “Paris” 时,语义搜索算法可以使用知识图和矢量数据库来了解用户可能指的是法国巴黎市,而不是其他同名实体。 通过使用矢量数据库来表示和比较实体和概念,搜索算法可以提供更相关和更准确的搜索结果。

总体而言,矢量数据库、语义搜索和知识图谱都是共同提高搜索算法的准确性和效率的技术。 通过利用这些技术,搜索引擎和其他应用程序可以更好地理解实体和概念之间的关系,从而更轻松地找到用户正在寻找的信息。

如何对自己的私有数据进行语义搜索

在我之前的文章 “ChatGPT 和 Elasticsearch:OpenAI 遇见私有数据(一)”,我详细描述了目前我们的 LLMs (Large Language Models)虽然能够实现语义搜索,但是由于它的局限性,不能针对私有数据进行语义搜索,因为私有数据对 LLMs 不可见。此外,由于 LLMs 的每次训练需要非常多的费用,它不能及时地针对新的数据进行训练,这也使得它的使用具有一定的局限性。正如我之前的文章中介绍的那样,我们可以使用 Elasticsearch 结合 LLMs 来共同完成语义搜索:

 

有关这个展示的详细步骤,请参阅文章 “ChatGPT 和 Elasticsearch:OpenAI 遇见私有数据(二)”。

针对语义搜索,除了上面的方案之外,Elastic 也提供一个叫做 Elasticsearch Relevance Engine™ 的发布。我们可以使用 Elastic 的开箱即用的 Learned Sparse Encoder 模型实现基于 ML 的搜索,无需训练或维护模型,可在各种领域提供高度相关、语义化的搜索。详细阅读,请参考:

  • Elasticsearch:部署 ELSER - Elastic Learned Sparse EncoderR
  • Elasticsearch:使用 ELSER 进行语义搜索

如果你想了解更多关于 NLP,语义搜索方面的知识,请参阅 “Elastic:开发者上手指南” 中的 “NLP - 自然语言处理及矢量搜索” 章节。

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

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

相关文章

LINUX命令:update-alternatives(软件版本管理工具)

前言   在基于 LINUX 操作系统之上安装所需开发环境组件时,可能会遇到无可避免的场景是:同一个组件,我们需要同时使用到两个或者更多的版本,比如 Java 有 1.6、1.7、1.8 等多版本,又比如 Python 有 2、3 等等&#x…

「2024」预备研究生mem-数学强化-整数、因数与倍数

一、整数、因数与倍数 二、带余除数 三、奇数与偶数 四、不定方程

Nature子刊-柔性薄膜上3D电极的直接激光写入

美国俄勒冈大学研究员设计了一种集成在柔性薄膜上的3D微电极阵列,其制造过程结合了传统的硅薄膜处理技术和双光子光刻在微米分辨率下的3D结构的直接激光书写技术,首次提出了一种产生高深宽比结构的方法。 发表在《自然通讯》杂志上的这项研究&#xff0c…

js实现控制台格式化打印版权信息(2023.7.16)

js代码在控制台格式化打印版权信息 2023.7.16 1、需求分析2、js实例(浏览器版权信息)2.1 百度一下2.1.1 js代码2.1.2 浏览器控制台输出效果 2.2 京东官网2.2.1 js代码2.2.2 浏览器控制台输出效果 2.3 EarthSDK地球页面2.3.1 js代码2.3.2 浏览器控制台输出…

【JMeter】JMeter进行JDBC数据库负载测试

JMeter进行JDBC数据库负载测试 前置准备1.创建线程组2.JDBC连接配置3.新建JDBC链接4.查看汇总报告 前置准备 此示例使用 MySQL 数据库驱动程序。 要使用此驱动程序,必须将其包含.jar文件(例如 mysql-connector-java-X.X.X-bin.jar)复制到 JM…

精选估值,解决买车卖车难题

在现代社会,车辆已经成为了人们生活中不可或缺的一部分。车辆的买卖交易也成为了许多人的生活中不可避免的问题。而估值则是买卖交易的过程中非常重要的一个环节。估值的准确与否直接影响到最后交易的结果。因此,选择一种准确便捷的估值方式就显得尤为重…

JAVA集合详解:用法、实例及适用场景

引言: 在JAVA编程中,集合是一种非常重要且常用的数据结构。通过使用集合,我们可以高效地组织和操作不同类型的数据。本文将深入探讨JAVA中各种集合的用法及实例,并介绍适用场景,以帮助更好地理解和应用集合。 --------…

TTX1994-可调谐激光器控制系统

花了两周时间,利用下班时间,设计了一个ITLA可调谐激光器控制系统,从硬件到软件。下面这个图片整套硬件系统,软件硬件都自己设计,可以定制,做到单片机问题也不大。相当于一套光源了 这是软件使用的界面&…

【算法】换根DP

文章目录 什么是换根DP例题分析——P3478 [POI2008] STA-Station题目列表1834. 树中距离之和⭐⭐⭐⭐⭐(两次 dfs)思路——冷静分析,列出式子算法分析⭐⭐⭐⭐⭐ 310. 最小高度树⭐⭐⭐⭐⭐2581. 统计可能的树根数目⭐⭐⭐⭐⭐C. Bear and Tr…

Coggle 30 Days of ML(23年7月)打卡

前言 最近开始关注LLM相关知识,但之前的NLP范式的技能不能丢。 这个练习还是比较适合我,感谢举办方选题,快速全部打卡一波。 打卡记录 任务一: 报名比赛,下载比赛数据集并完成读取 比赛链接:https://challenge.xfy…

第十六章:Understanding Convolution for Semantic Segmentation——理解用于语义分割的卷积

0.摘要 最近深度学习特别是深度卷积神经网络(CNN)的进展,显著提高了之前语义分割系统的性能。在这里,我们展示了通过操作与卷积相关的操作来改进逐像素的语义分割,这些操作在理论和实践上都具有价值。首先,…

【Java动态代理】—— 每天一点小知识

💧 J a v a 动态代理 \color{#FF1493}{Java动态代理} Java动态代理💧 🌷 仰望天空,妳我亦是行人.✨ 🦄 个人主页——微风撞见云的博客🎐 🐳 《数据结构与算法》专栏的文章图文并茂&am…

PyTorch 深度学习处理多维特征的输入

import numpy as np import torch import matplotlib.pyplot as plt# prepare dataset xy np.loadtxt(diabetes.csv, delimiter,, dtypenp.float32) x_data torch.from_numpy(xy[:, :-1]) # 第一个‘:’是指读取所有行,第二个‘:’是指从第…

Linux常用命令——eject命令

在线Linux命令查询工具 eject 用来退出抽取式设备 补充说明 eject命令用来退出抽取式设备。若设备已挂入,则eject命令会先将该设备卸除再退出。 eject允许可移动介质(典型是cd-ROM、软盘、磁带、或者JAZ以及zip磁盘)在软件控制下弹出。该…

Visual Studio 2022打包exe ,自动按日期生成文件

echo offREM 获取当前的日期和时间 set YEAR%DATE:~0,4% set MONTH%DATE:~5,2% set DAY%DATE:~8,2% set HOUR%TIME:~0,2% set MINUTE%TIME:~3,2% set SECOND%TIME:~6,2%REM 获取原始文件名 set "FilePath$(TargetPath)" for %%F in ("%FilePath%") do (set…

第46节:cesium 水面效果(含源码+视频)

结果示例: 完整源码: <template><div class="viewer"><vc-viewer @ready="ready" :logo="false"><!

【AT89C52单片机项目】99累减器

实验目的 掌握STC89C52RC单片机最小系统构成&#xff0c;最小系统由单片机芯片、时钟电路及复位电路组成。 掌握STC89C52RC单片机开发板与数码管的原理图、控制方式。 掌握对单片机I/O的复杂控制 熟练掌握C语言的设计和调试方法。 实验仪器 一套STC89C52RC开发板套件&…

Linux C/C++实现Socks5代理及Socks5协议抓包分析

如果你想在保持匿名的同时以更好的安全性和性能浏览网页&#xff0c;SOCKS5代理是一个不错的选择。 在使用互联网时&#xff0c;存在许多安全和数据隐私风险。此外&#xff0c;您可能不得不面对一些限制。想象一下&#xff0c;你想访问一个网站&#xff0c;但你根本无法访问它&…

【MySQL】从执行计划了解MySQL优化策略

文章目录 前言一、什么是执行计划1.1. 使用EXPLAIN命令1.2. 使用PROFILING 二、执行计划生成过程三、执行计划的操作符3.1. 查询计划操作符3.2. 连接操作符3.3. 辅助操作符 四、执行计划的诊断分析4.1. 使用EXPLAIN命令4.2. 检查索引4.3. 分析查询日志 五、如何分析 EXPLAIN 结…

pytorch 欠拟合和过拟合 多项式回归

欠拟合 训练误差和验证误差都有&#xff0c;还可能比较严重&#xff0c; 但它们之间仅有差距不大。 这个时候模型不能降低训练的误差&#xff0c;有可能是我们设计的模型简单了&#xff0c;表达能力不足&#xff0c; 捕获试图学习的模式比较难。由于我们的训练和验证误差之间的…