传统数据库与向量数据库:一个管“是什么”,一个管“像什么”

将向量数据库与LLMs集成:实用指南 在深入了解向量数据库是什么之前,理解向量嵌入的概念至关重要。向量嵌入在机器学习中至关重要,用于将原始数据转换为人工智能系统可以理解的数值格式。这涉及将数据(如文本或图像)转换为一系列数字,称为向量,在高维空间中。高维数据指的是具有许多属性或特征的数据,每个特征代表不同的维度。这些维度有助于捕捉数据的微妙特征。创建向量嵌入的过程始于输入数据,这可以是句子中的单词或图像中的像素等任何内容。大型语言模型和其他人工智能算法分析这些数据并识别其关键特征。 阅读详情

引言:当数据库开始理解“语义”

想象一下,你想在公司的知识库里找“如何优雅地处理客户投诉”的资料。在传统数据库里,你可能需要输入“客户”、“投诉”、“流程”等关键词,并祈祷文档的标题或标签里恰好有这些词。但如果你问一个同事,他可能会根据“意思”,直接给你一份名为《客户关系危机应对手册》的文件——即使它一个字都没提到“优雅”。

这,就是向量数据库要解决的核心问题:让计算机像人一样,根据“意思”和“语义”来查找信息。 它不是为了替代你熟悉的MySQL、PostgreSQL这些传统数据库,而是为AI时代涌现的海量非结构化数据(如文本、图片、音频)和智能应用需求,配备的一个“专用引擎”。

无论是构建一个能基于公司内部资料智能问答的AI助手,还是开发一个“拍照识花”的应用,或是打造一个“只听描述就能找到类似款式”的电商推荐系统,其背后都离不开向量数据库的支持。它正在成为大模型(如GPT)的“海马体” ,为其提供精准、长期的外部知识记忆,是构建检索增强生成(RAG)等核心AI应用的基石。

技术原理:从“精确匹配”到“相似性搜索”

要理解向量数据库,关键在于搞懂它与传统数据库的三个根本差异。让我们用人话拆解一下:

1. 存的是什么?从“结构化数据”到“向量嵌入”
  • 传统数据库:存储的是结构化或半结构化数据。比如一张用户表,规规矩矩地存着“用户ID、姓名、注册时间”。数据本身就有明确的业务含义。

  • 向量数据库:存储的是向量(Vector) ,也就是一串数字(例如 [0.23, -0.45, 0.9, …, 0.12])。这串数字是非结构化数据(如一段文本、一张图片)通过AI模型(称为“嵌入模型”)转换后得到的“数学指纹”,它捕捉了原始数据的语义特征。

    • 简单理解:把“苹果”这个词通过AI模型转换成向量,它的向量会靠近“水果”、“iPhone”,而远离“拖拉机”。向量数据库就存着这些“指纹”。
2. 怎么查?从“是什么”到“像什么”
  • 传统数据库:使用精确匹配查询。通过SQL的 WHERE 语句,查找“姓名 = ‘张三’”或“价格 > 100”的精确记录。核心是回答 “是什么” 。
  • 向量数据库:进行相似性搜索。你给它一个查询向量(比如把问题“好吃的水果”也转换成向量),它通过计算向量间的“距离”(常用余弦相似度),在数据库中找出与查询向量“距离最近”、即最相似的几个向量。核心是回答 “像什么” 。
3. 怎么找得快?从“B树”到“近似最近邻”索引
  • 传统数据库:用B树、哈希索引等,在精确查询时能快速定位到那一条目标数据。
  • 向量数据库:面对动辄成百上千维的向量,精确计算与库中所有向量的距离(暴力扫描)是灾难性的。因此,它使用近似最近邻(ANN)索引,如HNSW、IVF-PQ等。这些算法通过巧妙的预处理和分层结构,在允许微小误差的前提下,极大地牺牲一点点精度,换来百倍千倍的速度提升,实现毫秒级从十亿级数据中捞出最相似的结果。
维度传统数据库向量数据库
存储核心表格、文档等有明确含义的数据代表语义的“数字指纹”(向量)
查询逻辑精确匹配 (WHERE ...)相似性搜索 (“给我最像这个的”)
索引技术B树,哈希索引 (为精确查询)HNSW, IVF-PQ (为近似最近邻)
擅长场景存订单、用户信息,做财务统计处理文本、图片的语义检索,做AI应用大脑

实践步骤:亲手构建你的第一个语义搜索系统

理论说得再多,不如动手一试。下面我们以最常见的场景——为自己的文档库搭建一个智能语义搜索引擎为例,分步拆解。

步骤一:数据准备与向量化
  1. 收集资料:将你的文档(PDF、Word、TXT等)整理好。
  2. 切分文本:把长文档按段落或语义切成一个个“文本块”(Chunk),这是保证检索精度的关键一步。
  3. 生成向量:调用一个嵌入模型(如OpenAI的text-embedding-3-small、开源BGE模型),将每个文本块转化为一个向量。这一步就是让AI理解你文本的“意思”。
步骤二:向量存储与索引构建
  1. 选择数据库:根据数据规模选择。轻量级可选ChromaDB、Qdrant;大规模企业级可选Milvus、Weaviate。
  2. 建立连接:在代码中连接到你的向量数据库实例。
  3. 插入与建索引:将所有文本块对应的向量,连同文本块本身(或ID)插入数据库。数据库会自动为这些向量创建ANN索引。
步骤三:查询与检索
  1. 将问题向量化:当用户提出一个问题时,使用相同的嵌入模型把这个问题也转换成向量。
  2. 执行相似性搜索:将这个“问题向量”送入向量数据库进行搜索,设置返回最相似的K个结果(例如 top-5)。
  3. 获取原始文本:数据库返回最相似的向量ID,通过ID找到对应的原始文本块。
步骤四:集成应用(RAG流程)

将上一步检索到的相关文本块,作为“参考材料”和用户原始问题一起,提交给大语言模型(如GPT、Claude或开源LLM),让模型基于这些材料生成最终答案。这就构成了完整的检索增强生成(RAG) 流程,能极大减少大模型“胡说八道”的现象。

在这里插入图片描述

效果评估:如何判断你的系统是否智能

搭建完系统,如何判断它是否“学到位了”?可以从以下几个维度评估:

  1. 检索相关性评估:

    • 人工评估:准备一组测试问题,人工判断返回的Top-K个文档是否真的相关。这是最可靠的方法。
    • 自动指标:使用召回率(Recall)等指标。如果有标准测试集,可以看系统是否能找回所有已知的相关文档。
  2. 最终答案质量评估:

    • 真实性:生成的答案是否严格基于检索到的文档,没有“编造”?
    • 切题性:答案是否精准回答了问题?
    • 流畅性:答案是否通顺自然?
  3. 性能评估:

    • 响应延迟:从用户提问到返回答案,总耗时是否在可接受范围内(如2秒内)?
    • 吞吐量:系统每秒能处理多少个查询?

在微调和评估嵌入模型或用于生成答案的大模型时,LLaMA-Factory Online这样的平台能显著降低门槛。它允许你无需代码,就能用自己的业务数据微调模型,让模型输出的风格、格式和专业知识都“更像你想要的样子”,从而直接提升最终问答效果。这对于想快速打造一个高度定制化、行业专属AI助手的团队来说,是一个高效的起点。

总结与展望:协同进化,而非取代

回到最初的问题,向量数据库和传统数据库是“谁取代谁”的关系吗?显然不是。它们是互补与协同的关系:

  • 传统数据库是坚实的“记录系统”,负责处理严谨的业务逻辑和交易,保证数据准确无误。
  • 向量数据库是智能的“理解系统”,负责从海量非结构化数据中挖掘语义关联,赋能AI应用。

未来的现代应用架构,必然是两者的结合:核心业务数据存于传统数据库;其衍生的向量“语义指纹”存于向量数据库,共同支撑起一个既能精确算账、又能智能对话的应用。

一个明显的趋势是,两者正在相互融合。像PostgreSQL通过pgvector插件、MongoDB通过Atlas Vector Search,都开始原生支持向量搜索能力,为开发者提供了“一站式”的简化选择。但对于超大规模、超高并发的纯向量检索场景(如十亿级图片检索),专用的向量数据库在性能和扩展性上依然具备不可替代的优势。

作为开发者和AI应用构建者,理解这对“黄金搭档”的分工,意味着你掌握了在正确的地方使用正确工具的能力。从今天开始,尝试将你的数据从“关键词”的桎梏中解放出来,让它以“向量”的形式被理解、被检索,这或许就是你叩开下一代智能应用大门的钥匙。

《向量数据库指南》——探索DB For AI与AI For DB的融合新纪元 回顾参加完Mlivus Cloud的Meetup后的感想,我深刻感受到了向量数据库与AI技术的潜力和魅力。从向量数据库到AI的每次接触都让我对这两个领域的未来发展充满了期待和信心。我相信,在不久的将来,向量数据库和AI技术将会为我们带来更多的惊喜和突破。如果你对向量数据库和AI技术感兴趣,想要深入了解这两个领域的原理和应用实践,那么我推荐你阅读我的著作《向量数据库指南》。这本书不仅详细介绍了向量数据库的基本原理和关键技术,还结合了大量的实战案例和经验分享,帮助你更好地掌握向量数据库和AI技术的精髓和要点。 阅读详情

相关推荐

Milvus 向量数据库与传统关系型数据库的融合趋势

随着 AI 技术的发展,**企业应用不再局限于结构化数据,而是需要结合向量数据进行混合查询**。**因此,Milvus 与传统数据库的融合成为新的发展趋势!** 本文将探讨 **两者的核心区别、融合场景及未来趋势**,帮助开发者构建 **高效的混合查询系统**。

1465

什么是Vector Database(向量数据库)?

嵌入模型将各种数据(例如文本、图像、图表和视频)转换为数字向量,从而在多维向量空间中捕捉其含义和细微差别。嵌入技术的选择取决于应用需求,平衡语义深度、计算效率、要编码的数据类型和维数等因素。将向量映射到多维空间可以对向量的语义相似性进行细致入微的分析,从而显著提高搜索和数据分类的准确性。嵌入模型在使用 AI 聊天机器人、大型语言模型 (LLM) 和带有向量数据库的检索增强生成 (RAG) 的 AI 应用中起着至关重要的作用,以及搜索引擎和许多其他用例。

专注于人工智能领域的小何尚 1万+

《向量数据库系列 四》向量数据库和传统数据库的区别

传统数据库:以“结构化数据”为核心,旨在解决数据的高效存储、事务一致性(如转账、订单提交)和精确查询(如“查询年龄=30且城市=北京的用户”),典型代表如MySQL、PostgreSQL、Oracle。向量数据库:以“向量数据”为核心,旨在解决非结构化数据(如图片、文本、音频)的“相似性匹配”(如“找到与这张猫图最像的10张图片”“推荐与当前文章主题相似的内容”),典型代表如Pinecone、Milvus、Chroma。向量数据库并非传统数据库的“替代品”,而是针对“非结构化数据相似性查询”的补充工具。

sjc212的博客 853

向量数据库:下一代AI原生数据管理系统的架构与实现

摘要: 向量数据库是AI时代处理非结构化数据的关键基础设施,支持高维向量的高效存储与语义相似度检索。openGauss作为企业级开源数据库,深度融合向量处理能力,提供VECTOR数据类型、高性能索引(如HNSW、IVF)及异构计算加速,并集成高可用、安全等企业级特性。其应用场景广泛,包括推荐系统、跨模态检索、智能风控、药物研发和大模型增强等。未来将向自治运维、多模态检索、隐私保护等方向演进,成为AI落地的核心数据基座。openGauss通过开源生态推动行业智能化发展。

枫叶丹4的博客 7861

向量数据库详解

这个向量捕捉了这句话的语义信息。而在嵌入模型中,我们通过向量来描述数据,向量中的每个数字代表了某种特征(比如语义、颜色、形状等)。,通过声学模型从声音信号中提取的特征向量,这些向量捕捉了声音的重要特性,如音调、节奏、音色等,可以用于语音识别、声纹识别等任务。,通过深度学习模型提取的图像特征向量,这些特征向量捕捉了图像的重要信息,如颜色、形状、纹理等,可以用于图像识别、检索等任务;从本质上讲,嵌入作为一个桥梁,将非数字数据转换为机器学习模型可以使用的形式,使它们能够更有效地识别数据中的模式和关系。

风雨无阻学习之路 1861

4、Embedding基础:Embedding 与向量数据库

Qdrant(读作:quadrant /'kwɑdrənt/ n. 象限;象限仪;四分之一圆)是一个向量相似度搜索引擎。它提供了一个生产就绪的服务,具有方便的 API 来存储、搜索和管理点 - 带有附加载荷的向量。专门支持扩展过滤功能,使其对各种神经网络或基于语义的匹配、分面搜索和其他应用非常有用。以下展示了如何使用与向量数据库相关的功能。有各种运行的模式,取决于所选择的模式,会有一些细微的差异。选项包括:本地模式,无需服务器Qdrant 云请参阅安装说明。

Hugo的博客 2363

什么是 向量数据库(Vector Database)

向量数据库(Vector Database)是一种专门设计用于存储、索引和管理高维向量数据的数据库系统。这些向量通常是机器学习模型(如深度学习模型)生成的嵌入(embeddings),用于表示文本、图像、音频等数据的语义特征。向量数据库的核心目标是高效地支持向量相似性搜索(Similarity Search),以便在海量数据中快速找到与查询向量最相似的向量。

彬彬侠的博客 4858

向量数据库

Chroma 是一款开源的向量数据库,专为高效存储和检索高维向量数据设计。其核心能力在于语义相似性搜索,支持文本、图像等嵌入向量的快速匹配,广泛应用于大模型上下文增强(RAG)、推荐系统、多模态检索等场景。与传统数据库不同,Chroma 基于向量距离(如余弦相似度、欧氏距离)衡量数据关联性,而非关键词匹配。

m0_37599304的博客 1669

什么是向量数据库?向量数据库概念,详细入门

向量数据库是一种专门用于存储和查询向量数据的数据库。向量数据也就是embedding向量。典型结构是一个一维教组,其中的元素是教值(通常是浮点数)。这些数值表示对象或数据点在多维空间中的位置、特征或属性。

秃了也弱了 1万+

从亚稳态到流片失败:SpyGlass CDC在5G芯片设计中的避坑指南

本文深入探讨了在复杂5G芯片设计中,如何利用SpyGlass CDC工具构建高效的时钟域交叉验证流程,以避免因亚稳态问题导致的流片失败。文章结合实战经验,详细解析了从约束编写、时钟复位完整性检查到层次化验证和特殊场景处理的全过程,并强调了精准的检查约束是确保验证有效性的基石,旨在帮助设计团队安全跨越异步时钟域的雷区。

weixin_29168153的博客 444

ADSP-21565的SigmaStudio图形化编程实战:从FW工程改造到音频通道打通

本文详细介绍了如何将ADSP-21569的SigmaStudio图形化编程固件工程改造,以适配ADSP-21565的纯片内SRAM内存架构。通过修改内存映射和链接文件,打通了音频输出通道,并成功利用SigmaStudio进行图形化编程,实现了从白噪声生成到音频输出的完整验证流程。

weixin_29169505的博客 380

智能客服的演变:从传统到向量数据库的新时代

国产数据库在21世纪初取得了显著进展,超出了许多人当年的预期。如今,国内已拥有超过300种不同的数据库,这一现象不仅展现了中国在数据库领域的创新和突破,也为企业和个人提供了丰富的选择。然而,技术的演进并未止步于此。近年来,向量数据库的兴起在数据处理和存储领域掀起了新的风潮。向量数据库的崛起,为传统数据库提供了强有力的补充。它的优势在于处理复杂数据和高维数据时的高效性,尤其是在大规模数据分析、实时检索和智能推荐等领域表现突出。

努力的小雨,一个阳光向上的博客不仅仅给你知识更希望带给你快乐 2814

微信小程序转发功能异常报错 由于小程序违规分享功能暂时无法使用的解决办法

小程序右上角转发功能被封,不代表你违规了,而可能是你没认证、没备案!很多功能都是“先合规、后开发”,踩坑就晚了,别像我一样绕了三圈才发现问题。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 2610

数据仓库内容分享(十五):解读向量数据库

首先,我们需要理解什么是向量?向量是基于不同特征或属性来描述对象的数据表示。每个向量代表一个单独的数据点,例如一个词或一张图片,由描述其许多特性的值的集合组成。这些变量有时被称为“特征”或“维度”。例如,一张图片可以表示为像素值的向量,整个句子也可以表示为单词嵌入的向量。一些常用的数据向量如下:图像向量,通过深度学习模型提取的图像特征向量,这些特征向量捕捉了图像的重要信息,如颜色、形状、纹理等,可以用于图像识别、检索等任务;

之乎者也·的博客 2804

以 Joule 驱动的生成式开发:把需求文档直接变成可运行的 SAP 应用

摘要:SAP BTP的AI助手Joule正在改变开发方式,支持从自然语言描述自动生成数据模型、服务、UI及测试代码。在SAP Business Application Studio中,Joule能根据业务需求生成结构化代码,并提供代码补全、重构、解释等功能。开发者需注意避免上传敏感数据,并对AI生成的代码进行人工审核。Joule特别针对ABAP开发进行了优化,提供符合SAP规范的代码建议,帮助迁移遗留系统。此外,它还能快速生成CAP项目原型,但所有AI生成内容都需经过严格测试验证。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 342

48、基于头部电信号和触觉的人机交互技术研究

本文探讨了基于头部电信号控制决策和触觉感知的人机交互技术。通过EEG信号采集与ANN模型(TDNN/PRNN)分析,实现对用户意图的识别;同时利用触觉传感接口识别操作员有意接触,提升人机协作安全性。研究涵盖系统设计、数据处理流程、实验结果及技术拓展方向,并展望了两种技术在工业、医疗与智能家居等领域的融合应用前景。

i1j2k的博客 102

传统数据库与新兴向量数据库的对比分析

在信息技术飞速发展的当下,数据正以前所未有的速度产生和积累。据统计,全球每天产生的数据量已达数万亿字节,企业与组织对数据存储和处理的需求也日益增长。从早期基于结构化查询语言(SQL)的关系型数据库,到如今专为处理高维数据而生的向量数据库,不同类型的数据库技术在多样化的应用场景中应运而生。传统数据库巨头如 Oracle、MySQL 等,凭借多年的技术积累和成熟的生态体系,在众多领域占据主导地位;

weixin_43156294的博客 1443

详解YOLOv8网络结构/环境搭建/数据集获取/训练/推理/验证/导出/部署

YOLO(You Only Look Once)系列算法因其高效、准确等特点而备受瞩目。由2023年Ultralytics公司发布了YOLO的最新版本YOLOv8是结合前几代YOLO的基础上的一个融合改进版。本文YOLOv8网络结构/环境搭建/数据集获取/训练/推理/验证/导出/部署,从网络结构的讲解从模型的网络结构讲解到模型的部署都有详细介绍,同时在本专栏中还包括YOLOv8模型系列的改进包括个人提出的创新点,传统卷积、注意力机制、损失函数的修改教程,能够帮助你的论文获得创新点。

Snu77的博客 8万+

【粉丝福利社】向量数据库:大模型驱动的智能检索与应用

本文系统介绍向量数据库的原理、实现与应用,涵盖高维向量存储与检索的技术挑战和解决方案。全书分为理论基础、核心算法、工具系统、应用实践四部分,深入探讨向量嵌入、相似性搜索、HNSW、LSH等关键技术,结合FAISS和Milvus等开源工具,通过自动驾驶、语义搜索等案例展示实际应用。适合AI、数据科学从业者及对向量检索感兴趣的读者,兼具理论深度与实践指导价值。

愚公智库 6万+

Arcgis建筑面shp由DSM和DEM获取高度拉伸并可视化

Arcgis建筑面shp由DSM和DEM获取高度拉伸并可视化

yilvyangguang520的博客 3991

uniapp - 强力解决 swiper 轮播图内嵌套视频导致滑动不流畅卡顿问题,轮播滑块视图容器里既有图片也有视频video组件共同存在出现滑动切换特别卡,轮播组件包裹视频播放器加载慢及层级过高解决

uni-app,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,swiper,轮播图,轮播图嵌套视频,卡顿,加载慢,左右滑动不流畅,很卡,滑动过快就会卡住,uniapp使用swiper组件里嵌套视频与图片如何解决卡顿问题,详细解决教程,swiper里有视频video,播放器,视频+图片轮播,层级过高及卡顿问题,没等看完视频就自动切换了,报错,无法加载播放,uniapp的App安卓苹果端,video老是加载,APP端video组件播放视频卡顿,抖音,快手,上下滑动视

🏆 前端领域优质创作者 1万+

RAG与向量数据库的“笨”理解:一个新手小白的原理摸索笔记

作为一名技术小白,我在理解RAG与向量数据库时,曾被术语和公式层层“劝退”。这份笔记仅是一个初学者的笨拙探索:用买菜类比Embedding、用图书馆想象向量搜索,试图在晦涩的概念与日常经验间搭一座摇摇晃晃的桥。文中难免存在理解偏差,却愿以这些磕绊的思考痕迹,为同样迷茫的新手提供一丝共鸣。若您发现疏漏,恳请不吝指正——毕竟在技术的深海中,笨拙的试错也是划向彼岸的船桨。向量是一种有大小和方向的数学对象。它可以表示为从一个点到另一个点的有向线段。例如,二维空间中的向量可以表示为xy(x,y)xy。

lucassu的博客 1967

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

得物向量数据库落地实践

Milvus RT 200 不满足业务需求,并且 QPS 一直上不去,无论我们对 QueryNode 扩容多大,其中还发生过,将 Query 扩容到 60 个后,反而 RT 上升的问题,排查后是因为有的 QueryNode 和 Proxy 交互的时候网络会抖动影响了整体的 RT。一般向量数据库中向量的来源是将图片、音频、视频、文本等非结构化数据,将这些非结构化数据通过对应的量化算法计算出一个多维度的向量(生产使用一般向量维度会大于 512),并且将向量数据持久化在特定的存储上。

SmartCodeTech的博客 2123

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

主流的向量数据库(Vector Database)一览

向量数据库专为高维向量相似度搜索设计,通过专门的索引结构(如 HNSW、IVF、PQ 等)实现毫秒级近邻查询。)】等最新榜单,Pinecone、Milvus、Qdrant、Chroma、Weaviate(未列出但同样常见)等位列行业前茅。:开源,Kubernetes 原生向量搜索。:开源,Yahoo 提供的搜索与推荐引擎。:开源/商业混合,面向深度学习数据湖。:开源项目,Python 原生实现。:开源搜索引擎,插件支持向量检索。:开源库,C++/Python。:开源,高性能向量搜索引擎。

喝醉酒的小白 2881

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

向量数据库和传统数据库有什么区别?

向量数据库主要处理各种 AI 应用产生的非结构化数据,如图像、音频、文本等,通过近似查进行模糊匹配,输出的是概率上相对最符合条件的答案,而非精确的标准答案。- 向量数据库由于其索引结构和数据组织方式较为复杂,对向量数据的更新操作相对复杂,可能需要重新计算相似度等数据,并且涉及到对索引的重新构建或调整,在处理大规模数据时,更新操作可能会带来较大的计算开销和性能影响。- 传统数据库使用传统的索引结构(如 B 树、哈希索引等),基于精确的数值或关键字进行查询,查询结果是明确符合条件的数据记录。

alankuo的专栏 2239

向量数据库(Vector Database)深入浅出讲解

向量数据库是一种专门用来存储、检索和管理“向量数据(Vector Data)”的数据库。向量是一种多维的数值数组,通常用来表达图片、文本、音频、视频等非结构化数据在高维空间中的“特征表示”。基于向量之间的“相似度”进行快速检索。

AngelCryToo的专栏 1165
上一篇: 告别数据泄露:三步构建企业级AI的隐私保护盾
下一篇: 手把手教你调出“懂你”的AI:大模型微调实战与资源管理
狸奴算君
博客等级 码龄1年 2粉丝 67原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值