直达「 通往AGI之路 」飞书知识库 →
首页/问答列表/问答详情

向量数据库

回答

向量数据库是大语言模型从工具走向生产力实践中热门的 RAG 方式所必备的基础设施。

RAG 能够从海量文本数据中检索相关信息并生成高质量文本输出,而向量数据库在其中发挥着重要作用。

目前市面上的向量数据库众多,操作方式无统一标准。本文将基于 LangChain 提供的 VectorStore 类中的统一操作方法,以 chroma 向量数据库作为示例,从最为基础的 CRUD 入手介绍其使用方法。

向量数据库的工作原理如下: 如果是文本,会通过模型转换成向量对象,对象存入数据库中再去使用。传统数据库以表格形式存储简单数据,向量数据库处理的是复杂的向量数据,并使用独特方法进行搜索。常规数据库搜索精确匹配数据,向量数据库则使用特定相似性度量寻找最接近匹配,使用特殊的近似近邻(ANN)搜索技术,包括散列搜索和基于图的搜索等方法。

要理解向量数据库的工作原理及其与传统关系数据库(如 SQL)的不同,必须先理解嵌入的概念。非结构化数据(如文本、图像和音频)缺乏预定义格式,给传统数据库带来挑战。为在人工智能和机器学习应用中利用这些数据,需使用嵌入技术将其转换为数字表示,嵌入就像给每个项目赋予独特代码,以捕捉其含义或本质。

内容由 AI 大模型生成,请仔细甄别(powered by aily)

参考资料

开发:LangChain-RAG必备:向量数据库如何CRUD

RAG是目前大语言模型从工具走向生产力实践的最热门的方式,它可以实现从海量的文本数据中检索相关的信息,并用于生成高质量的文本输出。而聊到RAG,我们就很难避开使用RAG的基础设施-向量数据库。今天我将带领大家,以最为基础的CRUD入手来看看向量数据库应该如何使用。考虑到目前市面上的向量数据库众多,每个数据库的操作方式也无统一标准。「本文将基于LangChain提供的VectorStore类中的统一操作方法,以chroma向量数据库作为示例进行演示。」

开发:LangChain-RAG必备:向量数据库如何CRUD

RAG是目前大语言模型从工具走向生产力实践的最热门的方式,它可以实现从海量的文本数据中检索相关的信息,并用于生成高质量的文本输出。而聊到RAG,我们就很难避开使用RAG的基础设施-向量数据库。今天我将带领大家,以最为基础的CRUD入手来看看向量数据库应该如何使用。考虑到目前市面上的向量数据库众多,每个数据库的操作方式也无统一标准。「本文将基于LangChain提供的VectorStore类中的统一操作方法,以chroma向量数据库作为示例进行演示。」

大雨:简单易懂的向量数据库解析:你需要了解的一切

上图简单展示了向量数据库的存储过程,如果是文本,通过模型转换成向量对象,对象存入数据库中。再去使用它。传统数据库以表格形式存储单词和数字等简单数据。而向量数据库处理的是称为向量的复杂数据,并使用独特的方法进行搜索。常规数据库搜索精确匹配的数据,而向量数据库则使用特定的相似性度量来寻找最接近的匹配。向量数据库使用特殊的搜索技术,即近似近邻(ANN)搜索,其中包括散列搜索和基于图的搜索等方法。要真正理解向量数据库的工作原理,以及它与SQL等传统关系数据库的不同之处,我们必须首先理解嵌入的概念。文本、图像和音频等非结构化数据缺乏预定义格式,给传统数据库带来了挑战。为了在人工智能和机器学习应用中利用这些数据,需要使用嵌入技术将其转换为数字表示。嵌入就像给每个项目(无论是文字、图像还是其他东西)赋予一个独特的代码,以捕捉其含义或本质。这种代码可以帮助计算机以更高效、更有意义的方式理解和比较这些项目。把它想象成把一本复杂的书变成一个简短的摘要,但仍能抓住要点。

其他人在问
Embedding 嵌入向量生成模型
Embedding(嵌入)是一个浮点数的向量(列表),两个向量之间的距离度量它们的相关性,小距离表示高相关性,大距离表示低相关性。 Embedding 是一种在机器学习和深度学习中广泛应用的技术,特别是在自然语言处理(NLP)和其他涉及高维离散数据的领域。它指将原本高维且通常离散的输入数据(如单词、短语、用户 ID、商品 ID 等)映射到一个低维连续向量空间中的过程,这些低维向量称为嵌入向量。 例如,“国王”和“王后”在嵌入向量的空间里位置挨得很近,而“苹果”与前两者差别较大,其嵌入向量位置较远。Embedding 不仅限于单词,还可扩展到句子、文档、实体或其他类型的对象。通过训练诸如 Word2Vec、GloVe 或 BERT 等模型,可从大规模文本数据中学习出这样的嵌入向量,这些嵌入向量可看作是输入数据在潜在语义空间中的表示,能改善下游任务(如文本分类、情感分析、问答系统、机器翻译等)的表现。 除文本数据外,嵌入技术还应用于社交网络分析、推荐系统、图像识别(如位置嵌入)、图神经网络(如节点嵌入)等多种场景,实现将复杂对象的有效编码和降维表示。 Embeddings 有多种分类及对应模型: 句子和文档嵌入:Doc2Vec 能为整个文档生成统一的向量表示;Average Word Embeddings 是将一段文本中所有单词的嵌入取平均作为整体的文本表示;Transformers Sentence Embeddings 如 BERT 的标记对应的向量,或者专门针对句子级别的模型如 SentenceBERT。 实体/概念嵌入:Knowledge Graph Embeddings 如 TransE、DistMult、ComplEx 等,用于将知识图谱中的实体和关系嵌入到低维向量空间中。 其他类型:图像 Embeddings 使用卷积神经网络(CNN)进行图像特征提取,得到的特征向量即为图像嵌入;音频 Embeddings 在语音识别和声纹识别中,将声音信号转化为有意义的向量表示;用户/物品 Embeddings 在推荐系统中,将用户行为或物品属性映射到低维空间以进行协同过滤或基于内容的推荐;还有图 Embeddings 用于学习图结构的表示学习方法,将图中的节点和边映射到低维向量空间中,通过 DeepWalk、Node2Vec、GraphSAGE 等算法来实现,在图分析、社交网络分析、推荐系统等领域广泛应用,用于发现社区结构、节点相似性、信息传播等图属性。 在将大型文档转换为可检索内容的过程中,嵌入向量生成这一步将文本块转换为实值向量并存储在数据库中。但检索 PDF 文档的过程充满挑战,可能出现文本提取不准确和 PDF 文档内表格行列关系混乱等问题。在检索增强生成(RAG)框架中,回答一个问题需要用户提出问询,系统从私有知识库中检索相关内容,将相关内容与用户查询合并为上下文,最后请求大语言模型生成答案,准确检索相关信息对 RAG 模型的效力至关重要。
2024-12-11
向量检索在大语言模型中的应用主要是为了解决什么问题
向量检索在大语言模型中的应用主要是为了解决以下问题: 1. 由于大模型的输入窗口有限,通过文本分割器将文档分割成较小的对象,方便后续的检索和生成,在较短的文本中更容易找到相关信息。 2. 利用文本嵌入器将文本转换为高维向量,通过衡量文本之间的相似度实现检索功能。 3. 借助向量存储器存储和查询嵌入,通常使用索引技术如 Faiss 或 Annoy 加速嵌入的检索。 4. 检索器根据文本查询返回相关的文档对象,常见的实现如向量存储器检索器使用向量存储器的相似度搜索功能进行检索。
2024-12-05
ollama嵌入向量在模型后有什么用
嵌入向量在模型后的作用主要体现在以下方面: 1. 用于文档内容的表示和检索:将文档分成块,计算嵌入向量并存储在向量存储中,在测试时通过查询向量存储获取可能与任务相关的块,填充到提示中进行生成。 2. 提升模型的检索能力:在大语言模型应用程序中,向量存储成为检索相关上下文的主要方式,嵌入向量有助于更高效地获取相关信息。 3. 支持多语言和不同粒度的检索任务:例如像 bgem3 这样的向量模型,支持超过 100 种语言的语义表示及检索任务,能实现句子、段落、篇章、文档等不同粒度的检索。 在实际应用中,如在 LangChain 中,本地向量存储使用量较大,而在计算文本片段的嵌入时,OpenAI 占据主导地位,开源提供商如 Hugging Face 等也被较多使用。
2024-11-12
数据如何向量化
数据向量化是为了实现高效的文档检索,将原始的文本数据转化为数值向量的过程。其目的是将文本数据映射到低维向量空间,使语义相似的文本距离较近,不相似的较远。但这一过程会导致一定程度的信息损失,因为文本的复杂性和多样性难以用有限向量完全表达,可能忽略细节和特征,影响文档检索准确性。 在语义搜索中,根据用户问题从文档集合中检索语义最相关的文档,主流方法是基于数据向量化结果,利用向量空间中的距离或相似度度量语义相似度,但存在局限性,如不能完全反映真实语义相似度,向量空间中的噪声和异常值会干扰结果,导致准确率无法 100%保证。 在计算机科学和数据分析中,向量常被用作表示数据点的方式,是一个数值列表或数组,每个数值代表数据点的一个特征。多维数据运算常以矩阵形式进行,矩阵乘法是基本操作。归一化是数据预处理的关键技术,用于调整数值数据范围,常用方法有最小最大缩放和 Z 得分标准化。 在向量数据库中,当用户输入查询时,如“激动人心的科幻冒险”,会转换成一个向量,例如,表示对不同元素的偏好程度。向量数据库存放的是词在不同维度上的相对位置,数据的存储和检索与传统 Excel 和关系数据库有很大不同。关于文字如何转换成向量,实际的向量结构会很复杂。
2024-10-12
以图片为主的PDF文件向量化的本地大模型推荐
以下是关于以图片为主的 PDF 文件向量化的本地大模型的相关信息: RAG 技术: 利用大模型的能力搭建知识库是 RAG 技术的应用。大模型训练数据有截止日期,当需要依靠不在训练集中的数据时,可通过检索增强生成 RAG 技术实现。RAG 应用包括 5 个过程: 1. 文档加载:从多种来源加载文档,如包括 PDF 在内的非结构化数据、SQL 在内的结构化数据以及代码等。 2. 文本分割:把文档切分为指定大小的块。 3. 存储:包括将切分好的文档块嵌入转换成向量形式,并将向量数据存储到向量数据库。 4. 检索:通过检索算法找到与输入问题相似的嵌入片。 5. 输出:把问题以及检索出来的嵌入片一起提交给 LLM,生成更合理的答案。 PDF 翻译的 AI 产品: 1. DeepL(网站):,点击页面「翻译文件」按钮,上传 PDF、Word 或 PowerPoint 文件。 2. 沉浸式翻译(浏览器插件):,安装插件后,点击插件底部「更多」按钮,选择相关翻译选项。 3. Calibre(电子书管理应用):,下载安装并安装翻译插件「Ebook Translator」。 4. 谷歌翻译(网页):,使用工具把 PDF 转成 Word,再点击谷歌翻译「Document」按钮上传 Word 文档。 5. 百度翻译(网页):,点击导航栏「文件翻译」,上传多种格式文件,支持选择领域和导出格式。 6. 彩云小译(App):下载后点击「文档翻译」,可导入多种格式文档,但有免费次数限制且进阶功能需付费。 7. 微信读书(App):下载 App 后将 PDF 文档添加到书架,打开并点击页面上方「切换成电子书」,轻触屏幕唤出翻译按钮。 请注意,以上内容由 AI 大模型生成,请仔细甄别。
2024-10-06
稀疏向量有什么用,跟稠密向量油什么区别
稀疏向量和稠密向量在多个领域都有重要的应用,它们的主要区别在于元素的分布和存储方式。 稀疏向量中,大部分元素的值为零或为空,只有少数元素具有非零值。其主要用途包括: 1. 在处理大规模数据时,能够节省存储空间和计算资源,例如在自然语言处理中处理高维的词向量。 2. 对于具有稀疏特征的数据,能够更有效地表示和处理,比如在推荐系统中用户的兴趣特征。 稠密向量则是大多数元素都具有非零值。其特点和适用场景包括: 1. 更适合表示数据特征分布较为均匀的情况。 2. 在一些需要精确计算和密集运算的场景中表现较好,例如图像识别中的像素特征向量。 总的来说,选择使用稀疏向量还是稠密向量取决于具体的应用场景和数据特点。
2024-09-07
如何部署本地的智能数据库
以下是关于如何部署本地智能数据库的详细步骤: 1. 引言: 作者是致力于使用 AI 工具将自己打造为超级个体的程序员,目前沉浸于 AI Agent 研究。 本文将分享如何部署本地大模型以及搭建个人知识库,让您了解相关流程和技术。 2. 本地知识库进阶: 若要更灵活掌控知识库,可使用额外软件 AnythingLLM,它包含所有 Open WebUI 的能力,并额外支持选择文本嵌入模型和向量数据库。 安装地址:https://useanything.com/download 。 安装完成后进入配置页面,主要分为三步: 第一步:选择大模型。 第二步:选择文本嵌入模型。 第三步:选择向量数据库。 AnythingLLM 中有 Workspace 的概念,可创建独有 Workspace 与其他项目数据隔离。 构建本地知识库的步骤: 首先创建一个工作空间。 上传文档并在工作空间中进行文本嵌入。 选择对话模式,包括 Chat 模式(大模型根据训练数据和上传文档综合给出答案)和 Query 模式(大模型仅依靠文档中的数据给出答案)。 完成配置后即可进行测试对话。 3. 写在最后: 作者推崇“看十遍不如实操一遍,实操十遍不如分享一遍”。 若对 AI Agent 技术感兴趣,可联系作者或加入其免费知识星球(备注 AGI 知识库)。
2024-12-02
我想知道如果我上传给Coze数据库,我的数据安全有保障吗
关于您上传数据到 Coze 数据库的数据安全保障问题,以下是相关信息: 合规说明方面: 不存在产出违法违规内容,包括色情暴力、政治敏感和违法犯罪等。 不存在爬取行为,遵循 robot.txt 爬虫协议,未使用匿名代理。 不存在版权争议问题,未爬取强版权资源、付费内容等。 不存在跨境数据传输,未使用海外 API 和海外模型。 有安全合规声明,作者声明作品没有侵权,作品安全可用且公开可接受。 Coze 数据库的功能特点: 知识库功能不仅支持上传和存储外部知识内容,还提供多样化的检索能力,能解决大模型可能出现的幻觉问题和专业领域知识的不足,显著提升回复准确性。支持从多种数据源上传文本和表格数据,自动将知识内容切分成多个片段进行存储,并允许用户自定义内容分片规则,提供多种检索方式,适应各种使用场景。 数据库具备记忆能力,可以存储和检索用户的交互历史,以提供更加个性化的服务。支持实时更新,确保信息最新。能存储用户的交互历史,包括提问、回答和反馈,用于理解用户需求和优化对话流程,可进行个性化服务和错误纠正与学习。 综上所述,从目前的信息来看,您上传给 Coze 数据库的数据在一定程度上是有安全保障的。但具体情况还需参考 Coze 数据库的最新政策和规定。
2024-11-14
大模型如何接入企业数据库
大模型接入企业数据库的相关内容如下: 原理介绍: 从文档处理角度来看,实现流程包括配置要求。 配置要求: ChatGLM6B 模型硬件需求: 模型文件下载至本地需要 15GB 存储空间。 量化等级不同,最低 GPU 显存(推理)和最低 GPU 显存(高效参数微调)要求不同: FP16(无量化):分别为 13GB 和 14GB。 INT8:分别为 8GB 和 9GB。 INT4:分别为 6GB 和 7GB。 MOSS 模型硬件需求: 模型文件下载至本地需要 70GB 存储空间。 量化等级不同,最低 GPU 显存(推理)和最低 GPU 显存(高效参数微调)要求不同: FP16(无量化):分别为 68GB 和 。 INT8:分别为 20GB 和 。 Embedding 模型硬件需求:默认选用的 Embedding 模型约占用显存 3GB,也可修改为在 CPU 中运行。 项目启动: Web 启动:运行 web.py,若显存不足则调整 configs/model_config.py 文件中 LLM_MODEL 参数更换模型,若连接无法连接修改 web.py 文件末尾 lauch 中 0.0.0.0 为 127.0.0.1,点击 URL 进入 UI 界面。 API 模式启动。 命令行模式启动。 上传知识库: 左侧知识库问答中选择新建知识库,可传输 txt、pdf 等。可以调整 prompt,匹配不同的知识库,让 LLM 扮演不同的角色。例如上传公司财报,充当财务分析师;上传客服聊天记录,充当智能客服;上传经典 Case,充当律师助手;上传医院百科全书,充当在线问诊医生等等,MOSS 同理。 使用数据表: 通过在工作流中添加数据库节点对数据表进行操作。在工作流中可通过 NL2SQL 方式和代码方式进行调用,支持完整读写模式。参考以下操作,在工作流中添加并配置工作流节点。在工作流中配置数据库节点前,确保已经搭建了一个 Bot,并在这个 Bot 中创建好了数据表。 1. 单击页面顶部的工作流页签,然后单击创建工作流。 2. 输入工作流名称和工作流的使用描述,然后单击确认。工作流名称和描述可以帮助大语言模型理解什么场景下需要调用该工作流。 1. 在基础节点页签下,将数据库节点拖入到工作流配置画布区域。 2. 根据以下信息配置数据库节点。 输入:添加 SQL 执行中需要的参数,可以是一个变量,也可以是一个固定值。 SQL:输入要执行的 SQL 语句,可以直接使用输入参数中的变量。可单击自动生成使用大模型生成 SQL。在弹出的页面中,选择这个数据库工作流生效的 Bot 和数据表,然后使用自然语言描述要执行的操作,单击自动生成生成 SQL 语句,最后单击使用。 注意:不支持 Select语法,不支持多表 Join 操作,最多返回 100 行数据。
2024-10-11
如何在coze的prompt中调用数据库
在 Coze 的 prompt 中调用数据库可以参考以下步骤: 1. 基础框架: 本 bot 由提示词、数据库和工作流三部分构成。提示词使用结构化框架,要求大模型根据不同行为调用不同工作流。数据库用于记录不同用户历史记账记录,工作流中会用到。 2. 工作流: 增加记账记录 add_accounting_record: 开始:定义一个{{prompt}},把用户在 bot 输入的记账内容传入进来。 大模型:任务简单,使用任意模型均可,无需调整参数。输入定义了{{input}}引用开始节点的 prompt 参数。提示词让大模型拆解用户输入内容,识别【记账事项】、【发生时间】、【变动金额】,并分别赋值到{{item}}、{{occurrence_time}}、{{balance_change}}。输出定义了相应的{{item}}、{{occurrence_time}}、{{balance_change}}。 数据库——插入记账记录:输入定义了{{item}}、{{occurrence_time}}、{{balance_change}},用于接收大模型节点输出传入的内容。SQL 命令中,因数据库存入金额最小单位是分,所以当用户输入花费金额时,需乘以 100 存储。 3. 使用数据表: 用户通过自然语言与 Bot 交互来插入或查询数据库中的数据。Bot 会根据用户输入自动创建新记录并存储,也可根据用户查询条件检索数据返回。 在 Prompt 中添加并使用数据表时: 明确说明要执行的操作和涉及的字段,包括字段使用说明,以使大语言模型更准确执行操作。 在数据库功能区域添加要操作的数据表。 在调试区域进行测试,可单击调试区域右上方的已存数据查看数据表中的数据。
2024-09-02
向量数据库高效储存是什么意思 举个例子
向量数据库高效储存指的是专门用于存储高维向量,以实现快速准确的相似性搜索。在人工智能领域,尤其是自然语言处理和计算机视觉等方面,模型会生成并处理大量高维向量,传统数据库难以有效应对,向量数据库则为这些应用提供了高度优化的环境。 例如,像 GPT3 这样的大型语言模型,有 1750 亿个参数,会产生大量向量化数据,传统数据库很难有效处理,而向量数据库能够有效地管理和查询这些向量。 从系统角度看,预处理管道中向量数据库至关重要,负责高效存储、比较和检索多达数十亿的嵌入(即向量)。市场上常见的选择如 Pinecone,完全由云托管,容易上手,具备大型企业在生产中所需的多种功能。同时,还有 Weaviate、Vespa 和 Qdrant 等开源系统,通常具有出色的单节点性能,可针对特定应用定制;Chroma 和 Faiss 等本地向量管理库,有丰富的开发人员经验,便于启动小型应用程序和开发实验;pgvector 之类的 OLTP 扩展,对于特定开发人员和企业也是一种解决方案。 向量存储是用于存储和检索文本嵌入向量的工具,这些向量是文本数据的数值表示,能让计算机理解和处理自然语言。其主要功能包括高效存储大量文本向量、快速检索相似文本向量以及支持复杂的查询操作,如范围搜索和最近邻搜索。
2024-08-27
向量数据库高效存储与内存的关系
向量数据库的高效存储与内存有着密切的关系。 在生成式人工智能领域,通过扩展上下文窗口,模型能够处理更大量的文本并更好地保持上下文,但仅扩展上下文窗口并不能充分改善内存,因为推理的成本和时间与提示的长度呈准线性甚至二次方关系。此时,检索机制就显得尤为重要,它通过与提示相关的上下文数据增强和完善 LLM 的原始训练语料库。向量数据库(例如 Pinecone)已成为高效检索相关信息的事实标准,并作为 LLM 的内存层,使模型更容易快速准确地搜索和引用海量信息中的正确数据。 向量数据库专门用于存储高维向量,以实现快速准确的相似性搜索。由于人工智能模型,尤其是自然语言处理和计算机视觉领域的模型会生成并处理这些向量,所以对高效存储和检索系统的需求变得至关重要。像 GPT3 这样的大型语言模型,因其处理的数据量和复杂性,产生了大量向量化数据,传统数据库难以有效处理,所以基于 GPT3 和类似模型构建的应用在很大程度上依赖于向量数据库来有效地管理和查询这些向量。 例如,Marqo 向量数据库具有嵌入式存储在内存中的 HNSW 索引,实现了最先进的搜索速度,还能利用横向索引分片将规模扩大到亿级文档索引,支持异步和非阻塞数据上传和搜索,使用来自 PyTorch、Huggingface、OpenAI 等公司的最新机器学习模型,可从预先配置的模型开始或自带模型,内置 ONNX 支持和转换功能,可实现更快的推理和更高的吞吐量,并支持 CPU 和 GPU。
2024-08-27