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

【AI大模型】向量及向量知识库

在这里插入图片描述

一、词向量与向量

在这里插入图片描述

什么是词向量

在机器学习和自然语言处理(NLP)中,词向量(word embedding)是一种以单词为单位将每个单词转化为实数向量的技术。这些实数向量可以被计算机更好地理解和处理。

词向量背后的主要想法是,相似或相关的对象在向量空间中的距离应该很近。 similar 举个例子,我们可以使用词向量来表示文本数据。在词向量中,每个单词被转换为一个向量,这个向量捕获了这个单词的语义信息。例如,“king” 和 “queen” 这两个单词在向量空间中的位置将会非常接近,因为它们的含义相似。而 “apple” 和 “orange” 也会很接近,因为它们都是水果。而 “king” 和 “apple” 这两个单词在向量空间中的距离就会比较远,因为它们的含义不同。
在这里插入图片描述

通用文本向量

词向量实际上是将单词转化为固定的静态的向量,虽然可以在一定程度上捕捉并表达文本中的语义信息,但忽略了单词在不同语境中的意思会受到影响这一现实。因此在RAG应用中使用的向量技术一般为通用文本向量(Universal text embedding),该技术可以对一定范围内任意长度的文本进行向量化,与词向量不同的是向量化的单位不再是单词而是输入的文本,输出的向量会捕捉更多的语义信息。

向量的优势

  • 向量比文字更适合检索。当我们在数据库检索时,如果数据库存储的是文字,主要通过检索关键词(词法搜索)等方法找到相对匹配的数据,匹配的程度是取决于关键词的数量或者是否完全匹配查询句的;但是向量中包含了原文本的语义信息,可以通过计算问题与数据库中数据的点积、余弦距离、欧几里得距离等指标,直接获取问题与数据在语义层面上的相似度;
  • 向量比其它媒介的综合信息能力更强,当传统数据库存储文字、声音、图像、视频等多种媒介时,很难去将上述多种媒介构建起关联与跨模态的查询方法;但是向量却可以通过多种向量模型将多种数据映射成统一的向量形式。

一般构建向量的方法

在搭建 RAG 系统时,我们往往可以通过使用向量模型来构建向量,我们可以选择:

  • 使用各个公司的 Embedding API;
  • 在本地使用向量模型将数据构建为向量。

二、向量数据库

什么是向量数据库

  • 向量数据库是用于高效计算和管理大量向量数据的解决方案。向量数据库是一种专门用于存储和检索向量数据(embedding)的数据库系统。它与传统的基于关系模型的数据库不同,它主要关注的是向量数据的特性和相似性。

  • 在向量数据库中,数据被表示为向量形式,每个向量代表一个数据项。这些向量可以是数字、文本、图像或其他类型的数据。向量数据库使用高效的索引和查询算法来加速向量数据的存储和检索过程。

向量数据库的原理及核心优势

  • 向量数据库中的数据以向量作为基本单位,对向量进行存储、处理及检索。向量数据库通过计算与目标向量的余弦距离、点积等获取与目标向量的相似度。当处理大量甚至海量的向量数据时,向量数据库索引和查询算法的效率明显高于传统数据库。

主流向量数据库

  • Chroma:是一个轻量级向量数据库,拥有丰富的功能和简单的 API,具有简单、易用、轻量的优点,但功能相对简单且不支持GPU加速,适合初学者使用。
  • Weaviate:是一个开源向量数据库。除了支持相似度搜索和最大边际相关性(MMR,Maximal Marginal Relevance)搜索外还可以支持结合多种搜索算法(基于词法搜索、向量搜索)的混合搜索,从而搜索提高结果的相关性和准确性。
  • Qdrant:Qdrant使用 Rust 语言开发,有极高的检索效率和RPS(Requests Per Second),支持本地运行、部署在本地服务器及Qdrant云三种部署模式。且可以通过为页面内容和元数据制定不同的键来复用数据。

相关文章:

  • C++的智能指针
  • Java爬虫抓取数据的艺术
  • 电脑ip地址怎么换地区:操作步骤与利弊分析
  • 【学习笔记】TLS/SSL握手之Records
  • 智能新宠:BabyAlpha A2开启家庭机器人新时代
  • 【JAVA】synchronized 关键字的底层实现涉及得三个队列
  • Python知识点:如何使用Python进行物联网数据处理
  • JavaScript的条件语句
  • hive分区详细教程
  • 基于flask常见trick——unicode进制编码绕过
  • 【rabbitmq-server】安装使用介绍
  • Mac写入U盘文件如何跨平台使用 Mac电脑怎么把U盘文件传送到电脑 mac怎么用u盘拷贝文件
  • MMD模型一键完美导入UE5-VRM4U插件方案(一)
  • 国产sql工具何时才能出头?
  • 搜维尔科技:使用Xsens动作捕捉系统和ai训练人形机器人模仿人类运动,执行复杂任务
  • [译]Python中的类属性与实例属性的区别
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 10个确保微服务与容器安全的最佳实践
  • Bytom交易说明(账户管理模式)
  • CSS实用技巧
  • Electron入门介绍
  • es6(二):字符串的扩展
  • JSONP原理
  • php ci框架整合银盛支付
  • swift基础之_对象 实例方法 对象方法。
  • 关于Java中分层中遇到的一些问题
  • 前端代码风格自动化系列(二)之Commitlint
  • 前端路由实现-history
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 一文看透浏览器架构
  • Mac 上flink的安装与启动
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • ###C语言程序设计-----C语言学习(3)#
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • (1)svelte 教程:hello world
  • (13)Hive调优——动态分区导致的小文件问题
  • (3)STL算法之搜索
  • (day 12)JavaScript学习笔记(数组3)
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (二)测试工具
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .gitignore文件---让git自动忽略指定文件
  • .Net 知识杂记
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc
  • /proc/stat文件详解(翻译)
  • @Bean有哪些属性
  • [.NET]桃源网络硬盘 v7.4
  • [ACM独立出版]2024年虚拟现实、图像和信号处理国际学术会议(ICVISP 2024)
  • [AIGC] SpringBoot的自动配置解析