你的 RAG 慢,可能不是模型的锅揭秘 Lance:一个让 Parquet 都紧张的「AI 原生」列式格式

天下苦 Parquet 久矣!深度拆解 Lance:为什么 AI 时代的存储必须推倒重来? 然而,当你开始从传统的 BI 报表转向 AI 相关的核心负载——比如海量 Embedding 检索、RAG(检索增强生成)、或者是毫秒级的实时特征服务时——一种明显的技术“不适感”会迅速蔓延。面对 AI 负载的瓶颈,很多人的第一反应是直观的性能抱怨:Parquet 的随机读太慢,Iceberg 的元数据膨胀太重。优化的开发者来说,这简直是福音——它意味着数据一旦从磁盘读取,无需经过繁琐的 Decode 和转置(Transpose),就可以直接投喂给 CPU 的向量寄存器进行距离计算。 阅读详情

做 AI 应用的人,十有八九都踩过同一个坑:向量库塞了几千万条 embedding,一检索就卡成 PPT;想改几条脏数据,发现整个 parquet 文件得重写一遍;图、文、向量散落四处,关联查询写得像一坨意大利面。

这些问题的根,往往不在你的代码,而在底层那个「装数据」的格式——它当初是为报表分析设计的,不是为 AI 检索设计的。

今天聊一个正在 AI 基础设施圈子里悄悄走红的家伙:Lance。

◆ ◆ ◆

一、Lance 到底是什么?

一句话:Lance 是一个为 AI / 机器学习工作负载重新设计的开源列式存储格式。

它不是「又一个 Parquet」——它是一个包含文件格式、表格式、轻量级 catalog 规范三层的完整湖仓格式。LanceDB 团队当初在做向量数据库时,翻遍了市面上的格式,发现没有哪个能同时满足「扫描快 + 随机读快 + 版本化更新」这三个看似矛盾的目标,于是从零写了一个。

Lance 的诞生有学术背书:2025 年 4 月,团队在 arXiv 上发表了论文《Lance: Efficient Random Access in Columnar Storage through Adaptive Structural Encodings》,系统阐述了其核心编码方案。

技术底子:核心用 Rust 写,Python / JS 绑定通过 PyO3 / Napi 实现,底层基于 Apache Arrow 内存模型。这意味着它与 Pandas、Polars、DuckDB 等生态实现零摩擦对接——数据以 Arrow 格式在内存和磁盘之间直接传递,无需序列化开销。

二、为什么 Parquet 在 AI 时代「不够用了」

不是 Parquet 不好——它依然是离线分析场景的王者。问题是,AI 工作负载的读写模式和报表分析完全不同。Parquet 的核心假设是「数据写一次、扫全表、不改了」,而 AI 场景需要的是「高频随机读、增量更新、多模态一起查」。

两个点展开说一下:

(1)Row Group 的双刃剑。 Parquet 把数据按行切成 Row Group(通常 512MB~1GB),每个 Row Group 内部按列存。这让你扫全表时吞吐极高——但想取某一行,你得先把整个 Row Group 的某列解压出来。论文指出,Parquet 在默认配置下随机读性能很差(约 6K 行/秒),但通过调优(禁用页级统计、缩小页大小、使用 page offset index)也可以做到和 Lance 接近(~400K 行/秒)。问题在于:这些调优会显著增加内存占用——每十亿条向量需要额外约 20GB RAM 来缓存偏移索引。

(2)更新就是重写。 Parquet 本身是不可变的,任何增删改本质上都是整文件重写,在云存储上的开销尤其大。

直接上对照表,一目了然:

维度ParquetLance
读单条记录默认慢(需解压整个 Column Chunk + 遍历页)快(固定大小页,按行号直接定位 + 一次解压)
更新 / 删除不可变,增删改即整文件重写支持原地追加、删除位图标记、版本管理
向量检索不原生支持,需外部向量库原生支持向量列 + IVF_PQ / HNSW 索引
多模态可存二进制,但无特殊优化图 / 文 / 向量 / 视频同表存放,大 blob 支持懒加载
数据跳过靠 ColumnChunk 级 min/max 统计(行组粒度)逐页级 min/max + 自适应索引,跳过粒度更细
列添加全表重写零拷贝追加(只写新列数据)

Lance 的论文中也坦承,Parquet 经过正确配置后随机访问性能只有 Lance 的 2~5 倍差距,并非「数十上百倍」那么悬殊——大幅领先主要出现在向量检索场景(Parquet 的 page offset index 内存占用在向量场景下会爆炸,而 Lance 不会)。

三、Lance 的架构核心:Adaptive Structural Encoding

Lance 性能的秘密藏在它的编码方案里。它抛弃了 Parquet 的 Dremel 编码(repetition/definition levels),而是采用自适应结构编码——根据数据宽度自动切换两种策略:

宽数据(如向量/图片/文本):Full Zip 编码

  • 每个值独立存储,存取复杂度 O(1)
  • 读取第 n 行时,直接计算偏移量、一次磁盘寻道 + 一次解压即可拿到
  • 没有重复的页偏移索引,内存占用极低

窄数据(如浮点数/整数/短字符串):Miniblock 编码

  • 每 4~8KB 数据打包成一个 miniblock,metadata 极轻
  • 读取时先定位到 block,再 block 内顺序扫描目标行
  • 适合小标量值的批量读取

这套方案的巧妙之处在于:两种编码可以在同一张表的不同列上共存。图片列用 Full Zip、ID 列用 Miniblock、embedding 列用 Full Zip + 向量索引——互不影响,各自最优。

其他架构要点:

  • Fragment 取代 Row Group

    。一次写入生成一个 Fragment(可独立压缩/索引),避免了 Parquet 那种「写完一个 Row Group 才知道 schema 全不全」的问题。

  • Manifest + 版本管理

    。每个版本由一个 immutable 的 Manifest 文件描述,指向该版本有效的 Fragment 和索引列表。查询按版本号寻址,天然支持「时间旅行」。

  • 删除位图

    。删除行不重写数据,只在对应 Fragment 写入一个位图标记已删行。数据实际回收由 compaction 完成。

  • 零拷贝列追加

    。新增列只会写入新数据文件,旧数据完全不动——这对特征工程场景极为重要。

四、三张王牌

  1. 随机访问性能

论文实测数据:在 NVMe 磁盘上,Lance 可实现 ~400K 行/秒的随机读取(单线程),基本逼近系统调用开销的物理上限。这得益于 Full Zip 编码的 O(1) 行定位和 miniblock 的低 metadata 开销。对 RAG 检索、训练样本随机抽选来说,这是实打实的吞吐提升。

  1. 零拷贝版本管理

每次写入产生一个新版本,旧版本仍可查询和回滚。更关键的是:版本之间共享未修改的数据文件。创建 100 个版本不等于复制 100 份数据——只有增量的那部分写入新的 Fragment。配合 compaction 定期合并小 Fragment、回收已删行的空间,版本管理的存储开销非常可控。

  1. 为向量和多模态而生

一个数据集里同时存放图片路径、文本、embedding 向量,检索时一次 IO 全拿到。Lance 原生支持 IVF_PQ(倒排 + 乘积量化)和 HNSW 两种 ANN 索引,索引与数据版本一致,不存在「数据更新了、索引还是旧的」的脱节问题。

五、30 秒上手:写进去,建索引,查出来

import lanceimport pyarrow as pa# 1. 一份带向量的数据tbl = pa.table({    "id":     [1, 2, 3],    "text":   ["猫", "狗", "鸟"],    "vector": [[0.1, 0.2], [0.3, 0.4], [0.5, 0.6]],})# 2. 写进 Lance 数据集ds = lance.write_dataset(tbl, "data.lance")# 3. 为向量列建 IVF_PQ 索引ds.create_index("vector", index_type="IVF_PQ")# 4. 最近邻检索rs = ds.to_table(    nearest={"column": "vector", "q": [0.1, 0.2], "k": 2}).to_pandas()print(rs)

安装只需 pip install lance(旧版包名 pylance 仍可用,但推荐新名)。LanceDB 在此基础上又包了一层 Table API,支持 SQL 过滤、全文搜索和向量检索的混合查询。

六、谁在用 Lance?

这不是个「实验室玩具」:

  • Netflix

    :媒体数据湖,用 Lance 存储和检索海量视频元数据及特征

  • Uber

    :分布式多模态 AI 数据湖,用于自动驾驶数据的存储与查询

  • Exa

    :下一代搜索引擎,在 Lance 上构建了 PB 级的 AI 数据管道

  • HuggingFace Datasets

    :OpenVid 数据集直接以 Lance 格式发布,内嵌视频、分镜特征、CLIP embedding 和预建的 IVF_PQ 索引

七、它和本体有什么关系?

  • RAG / GraphRAG

    :海量文档切片 + embedding 落进 Lance,随机检索延迟从秒级压到毫秒级,知识图谱的向量层有了靠谱的物理底座。

  • 多模态知识库

    :本体建模常要关联文本、图像、实体向量,Lance 同表存放省去大量 ETL 和跨系统数据搬运。

  • 数据版本与可追溯

    :本体演化、规则迭代时,哪个数据集版本对应哪版推理结果——Lance 的版本管理天然适配「可解释、可追溯」的合规诉求。

  • 列追加与特征演化

    :新算出的 embedding 或标注作为新列追加到原表,零拷贝,不影响已有查询。这对持续迭代的本体标注流程来说是实打实的基础设施利好。

数据格式是 AI 时代的地基。地基选错了,上层怎么优化都白搭。——这是一种认知

八、一个更根本的问题:本体时代,数据到底存在哪?还需不需要数据中台?

聊到这,很多老读者应该已经想到了一个更深层的问题——我们搞本体、搞 GraphRAG,天天谈语义模型、实体抽取、关系推理。但这些数据肉身到底该放在哪里?是不是还得搭一个庞然大物一样的数据中台?

现状:数据在「打地鼠」

做个技术架构的人大概都有这个体感:一个 AI 项目跑起来,数据至少散落在四五个系统里——

  • 原始数据

    (文档、图片、视频)在对象存储(S3 / OSS),按目录组织

  • 结构化元数据

    在关系库(PostgreSQL),存 tags、labels、来源信息

  • embedding

    在向量库(Pinecone / Milvus / Qdrant),做语义检索

  • 实体关系

    在图数据库(Neo4j / NebulaGraph),做知识推理

  • 训练样本

    在 Parquet 文件里,供模型消费

每多一个系统,就多一条 ETL 管道、多一套权限体系、多一次同步延迟。中台的价值在这里看似很大——统一入口、集中治理。但代价呢?

数据中台的「三重税」

第一重:模型税。 中台内部用的是星型模型 / 维度建模,天然为报表查询优化的设计。到了 AI 侧,你得再做一次转换——把星型拍平、把维度转向量、把事实表和维度表拼成大宽表。这层转换的成本,往往比中台自身的建设成本还高。

第二重:版本税。 本体是演化的——今天加了两个实体类型,明天换了 embedding 模型,后天改了切分策略。中台的 schema-on-write 模式要求先改模型再灌数据,每次演化都牵一发而动全身。

第三重:ETL 税。 数据从中台到推理管道,要过至少两套 ETL:中台内部生成数据集 → 导出到对象存储 → 再导入到向量库。每一步都是延迟和出错面。

Lance 让「轻底座」成为可能

Lance 的架构恰好击中了以上三个痛点:

一个格式替代多个系统。 Lance 允许你在同一张表里放原始文本、图片 blob、embedding 向量、标签元数据。检索时一次 IO 拿到全部,省去跨系统 join。

列追加替代 schema 变更。 换了 embedding 模型?新算出来的向量作为新列追加到原表。旧向量保留,不影响已有查询。零拷贝,不需要动中台的模型设计。

版本对版本:本体版本 = 数据版本。 你的本体每次迭代,对应 Lance 数据集的一个 commit 版本。回滚本体时回滚数据版本即可。可追溯、可复现。

那么,还需不需要数据中台?

我的判断是:不需要传统意义上的重型数据中台,但需要一个「轻量数据底座」。

两者的区别:

维度重型数据中台轻量数据底座
核心假设数据为报表服务数据为 AI 服务
数据模型星型 / 雪花模型Arrow + 多模态原生
存储策略数仓 + 数据集市 + 数据湖三层Lance 统一存储 + 图库做推理
演化代价schema 变更需停服审批列追加零成本
系统数量5~8 个组件是标配Lance + 图库 + 轻量调度

组合建议:Lance 存实体属性和 embedding,图数据库存关系拓扑,两者在查询层通过检索 API 打通——而不是通过传统 ETL 管道。

Agent 来了,同步模式还顶得住吗?

这个问题再往下挖一层,就是 AI agent 场景里最实际的一个架构分歧:

Agent 应该直接查数据库拿实时数据,还是等中台同步完了再从中台查?

大多数人的第一反应是「走中台」,因为那是当年做数据治理时被反复灌输的最佳实践——数据要先入湖、统一口径、再对外服务。但这个模式在 agent 场景下有三个致命问题:

问题一:同步延迟 = agent 说胡话。 数据中台的同步周期通常是 T+1(小时级算好的),好一点能做到分钟级 CDC。但一个 agent 在对话中要回答「当前订单状态是什么」「这个实体最新的属性值是多少」,它需要的是此刻的数据。一个告诉自己仓库没货、实际 5 分钟前刚补了货的 agent,和「胡言乱语」之间只隔了一次 ETL 延迟。

问题二:同步加重了「本体脱节」。 中台里的数据模型(维度表、事实表)和本体里的语义模型(实体、关系、属性)天然是两套语言。哪怕中台同步完了,agent 还得再做一层「语义映射」——把中台的列名翻译成本体的属性名。多一次映射,多一个出错面,多一层代码维护。

问题三:同步链路越长,agent 的「冷启动」越慢。 新接入一个数据源,中台团队排期开发 ETL → 数据入 lake → 模型评审 → 开放 API。一套流程走下来按周甚至按月计。而 agent 接入一个新实体的方式,理论上只需要在本体里加一个类型定义,数据就能通过 Lance 直查。快了几个数量级。

那 agent 到底应该怎么查?

我给的建议是:不走中台同步这条老路,走「本体即 Schema,Lance 即 Store,Agent 即 Query Engine」的新路。

架构画出来是这样:

Agent(自然语言 / 任务指令)    ↓本体查询层(语义解析 → 映射到实体、属性、关系)    ↓Lance(实体属性 + embedding) ←→ 图数据库(关系拓扑)    ↑ 同一份数据,不搬运业务数据库 / API / 文件(原始数据源)

这套模式的核心差异:

中台同步模式本体直查模式
数据流向多源头 → ETL → 中台 → API → Agent多源头 → Lance 单份存储 → 本体层 → Agent
延迟T+1 到分钟级秒级
语义对齐需两次映射(源→中台模型→本体)只需一次(Lance 列直接对应本体属性)
系统数量数据源 + ETL + 中台 + API + Agent数据源 + Lance + 本体层 + Agent
维护成本每加一个数据源 = 一条新 ETL 管道每加一个数据源 = 一个 Lance 数据集 + 本体类型声明

这里 Lance 的角色很特殊。它不是传统意义上的「数据库」——Lance 数据集可以是直接指向 S3 上 Parquet 文件的虚拟视图(通过 Arrow Dataset API),也可以是一个独立的 Lance 格式存储副本。关键是不需要「先同步到中台再给 agent 用」,agent 可以直接 query Lance,Lance 可以 zero-copy 引用已有数据。

那治理怎么办?

有人会问:不经过中台,数据质量、血缘、权限怎么管?

答案是:这些事不绑定「同步」这一步。 本体层本身就是天然的治理框架——每一个实体类型、属性、关系的定义就是数据标准。权限可以下沉到存储层(Lance 的 catalog 支持细粒度访问控制),血缘由版本管理自动记录。这些在直接查询模式下都能做,不需要先把数据搬到一个专门做治理的系统里。

治理应该寄生在数据流动的路径上,而不是在路径中间修一个大坝。——这是另一种认知

本体时代的数据架构,不应该是「先建一个中台把所有数据管起来」,而是**「让数据在存储层就和你的 AI 工作负载对齐」**。Lance 这样的格式,恰好让这件事变得可行。

九、泼一盆冷水(真诚版)

  • Lance 还很年轻

    ,BI 工具对接、ETL 生态远不如 Parquet 成熟。你要用 Tableau / Power BI 直查的话暂时走不通。

  • 纯离线报表分析

    ,Parquet 依然够用甚至更优。Lance 的优势不在全表扫描,而在混合负载。

  • 选型建议

    :AI 检索 / 多模态 / 频繁列演化场景优先 Lance;纯批量分析 / BI / 数仓保留 Parquet。两者不是取代关系,是分工关系。

  • 论文也说了

    :Parquet 经过深度配置后(page offset index、小页大小、禁用字典编码等)随机读并不差,只是在向量场景的内存开销上扛不住。

十、写在最后

我们聊本体、聊大模型、聊 GraphRAG,但经常忽略最底层那块砖——数据是怎么存的。Lance 这类「AI 原生格式」的崛起,本质上在提醒一件事:当工作负载从「人看报表」变成「模型读向量」,整个数据栈都得重做一遍。

学AI大模型的正确顺序,千万不要搞错了

🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!

有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!

就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋

在这里插入图片描述

📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇

学习路线:

✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经

以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!

我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

在这里插入图片描述

从多模态数据湖到Agent湖:Lance格式如何重塑AI数据底座 在AI基础设施领域,数据格式选型正成为决定机器学习管线效率的关键环节。传统列式存储如Parquet在海量结构化数据分析中表现卓越,但面对图像、文本、向量等多模态数据,以及随机样本读取、边写边读、内嵌向量索引和版本回溯等AI原生需求时,其设计局限逐渐显现。Lance作为一种专为AI/ML场景设计的开源列式格式,基于Apache Arrow内存布局,通过Fragment、Chunk与数据页的组织方式,实现了高效随机访问与增量写入,并将向量索引与标量过滤融合为格式层的一等公民。同时,内置的事务性版本管理为数据构建 阅读详情

相关推荐

Nordic开发者必备:SEGGER Embedded Studio免费许可证申请与配置全攻略

本文为Nordic芯片开发者提供了SEGGER Embedded Studio(SES)集成开发环境的详细配置指南。内容涵盖免费许可证的合规申请流程、项目创建、Nordic SDK集成,以及编辑器优化、构建调试配置、RTT日志输出等核心功能的高效设置,旨在帮助开发者构建深度优化的专业开发环境,显著提升嵌入式开发效率。

cheese的博客 353

从多模态数据湖到 Agent 湖:Lance 的格式设计与实践|Lance Meetup 火热报名中

Lance 是面向 AI 的数据湖格式,将随机访问、向量 / 全文索引下沉至格式层,训练、检索与 Agent 记忆共用一份数据;火山引擎已在智驾、内容平台落地验证。

volcenginetod的博客 261

python DEA: 基于非径向距离NDDF的Malmquist-Luenberger 指数及其分解

点赞发Nature 关注中Science Malmquist-Lenberger指数(ML指数)是距离函数与DEA计算中常用的指数,ML指数可以进一步分解为技术进步technological progress和效率改善effeciency change. 技术进步常被当做增长模型中的全要素生产率,用到许多计量经济研究中,探讨影响技术进步的环境变量。这里我分享一个考虑非期望产出下的NDDF方法计算ML指数。 该ML指数为global ML(区别于sequential ML) import numpy as

Cmmmmm丶的博客 5299

多模态AI原生数据库:LanceDB简介与实战

多模态AI原生数据库:LanceDB、概述、原理、索引、搜索、SQL语法、实战、Lance

lonelymanontheway的博客 545

从KVM虚拟化到Openstack云化架构综述

目录 摘要 OpenStack的虚拟化技术 OpenStack架构介绍 Nova Swift KeyStone Neutron Glance Cinder Ceilometer Heat 摘要 这两年的工作中,接触到公有云和私有云的项目还不少。起初对于Openstack的了解,仅停留在其几大组件的交互上,如Nova、Neutron、Glance等,以及对各大云厂商功能点上...

liyunpeng229的博客 2051

MATLAB App Designer 实现多窗口交互与数据传递实战

本文详细介绍了如何使用MATLAB App Designer实现多窗口交互与数据传递的实战技巧。从基础的多窗口应用设计到高级的动态窗口创建,涵盖了窗口调用控制、数据传递方法、状态管理及用户体验优化等核心内容,帮助开发者高效构建复杂的MATLAB GUI应用。

milk5的博客 667

Lance:面向智能体的多模态数据湖原生格式设计

数据湖正从面向SQL查询的结构化存储,演进为面向AI智能体(Agent)行为建模的语义化基础设施。其核心挑战在于弥合多模态数据(PDF、图像、语音、表格)与Agent推理链之间的语义断裂——传统格式如Iceberg、Delta Lake缺乏对操作血缘、embedding原生索引、细粒度权限及执行迹(Execution Trace)的一等公民支持。Lance通过Resource-Operation-Artifact三元组范式与四层嵌套Schema,将Agent的一次完整决策过程固化为可追溯、可验证、可复现的数

weixin_31364787的博客 304

如何实现三种不同RAM?(单端口RAM、伪双端口RAM、真双端口RAM|verilog代码|Testbench|仿真结果)

RAM(随机存取存储器)是计算机系统中的一种主要存储器件,用于存储和读取数据。在RAM中,单端口RAM(Single-port RAM)和双端口RAM(Dual-port RAM)是两种常见的类型,双端口RAM又分为真双端口(True dual-port RAM)和伪双端口RAM(Simple dual-port RAM)。那么什么是单端口和双端口?又该如何区分真双端口和伪双端口?输入只有一组数据线和一组地址线,读写共用地址线,输出只有一个端口。

Loudrs的博客 1万+

AI时代数据存储新选择:Lance格式深度解析

在AI驱动的数据处理场景中,传统列式存储格式Parquet面临版本管理困难、向量检索效率低等挑战。新一代AI原生存储格式Lance通过动态版本化、内置向量索引等创新设计,显著提升了特征工程和模型训练场景下的I/O效率。作为面向机器学习优化的存储方案,Lance实现了数据版本Git式管理、向量检索20倍加速等突破,特别适合RAG应用、在线学习等AI典型场景。其分层存储架构和计算下推机制,为处理10亿级向量数据提供了毫秒级响应能力,正在成为替代Parquet的新一代标准。

weixin_31887307的博客 42

从零开始深入理解 AI Agent(完整版)

AI Agent(智能体)是一个能够自主感知环境、做出决策、执行行动并记忆经验的智能系统。特性传统程序AI Agent决策方式固定逻辑(if-else)动态推理(LLM 思考)灵活性需要重新编程自然语言描述即可能力边界明确限定可通过工具扩展学习能力无可通过记忆积累经验│ 感知 │ ───→ │ 推理 │ ───→ │ 行动 │↑ │ ││ ↓ ││ 记忆 │ ←─── │ 反思 │ ←─────────┘感知(Perception)

qq_20096229的博客 760

玩转Docker | 使用Docker部署MediaCMS内容管理系统

玩转Docker | 使用Docker部署MediaCMS内容管理系统

qq_59334230的博客 2921

大型语言模型(LLMS)、可检索式增强生成(RAG)和AI缺失的存储层

在人工智能迅速发展的背景下,尤其是语言模型机器(LLMs)已成为许多应用的真正支柱,从自然语言处理和机器翻译到虚拟助手和内容生成。GPT-3及其继任者的出现标志着AI发展的一个重要里程碑,开启了一个时代,在这个时代中,机器不仅能理解,还能以惊人的熟练度生成类似人类的文本。然而,在这场AI革命的表面之下,隐藏着一个关键的缺失元素,这个元素有潜力解锁更大的AI能力:存储层。

python1234567_的博客 1208

UNet 改进(19):与ASPP结合的图像分割模型

这个代码实现了一个改进版的UNet模型,在传统的UNet架构基础上,引入了ASPP模块来增强模型捕获多尺度上下文信息的能力。​​UNet主干网络​​:经典的编码器-解码器结构,带有跳跃连接​​ASPP模块​​:位于瓶颈层,用于提取多尺度特征。

2401_82355416的博客 879

DeepTutor:三步装好你的 AI 个性化学习助手(新手向)

DeepTutor 是一个开源的 AI 个性化学习工作台,聊天、知识库、笔记、记忆合在一个系统里,接上你喜欢的模型就能用。它适合啃论文、整理资料的自学者,也适合想折腾学习工具的开发者。收益是:它能照你的资料讲题、出题,并记住你的学习轨迹。 ## 先判断它适不适合你 - 你有论文、网页、PDF 这类材料要反复读,想边读边提问:适合,知识库就是干这个的。 - 你要的是一个"记得住你"的长期助教,而

gitblog_01128的博客 166

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

深度学习工具包 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")

能力联邦:Presto 的一种可能演进方向

从 Data Access 到 Capability Provider:关于联邦查询引擎演进的一些思考

不动明王1984的博客 340

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

面向PR行业的RAG+语义路由AI助手实战指南

RAG(检索增强生成)是一种将大语言模型与私有知识库深度结合的基础技术,其核心原理是通过向量检索精准定位相关上下文,再驱动模型生成可靠回答,从而从根本上抑制幻觉。相比通用提示工程,RAG在专业文档处理中展现出更强的事实一致性与领域适应性。结合Semantic Routing(语义路由),系统可自动识别用户意图并分发至新闻通稿生成、演讲稿撰写、简报解析等专用任务流,显著提升输出的专业性与结构化程度。该技术组合已广泛应用于公关、品牌、咨询等需高频处理非结构化文本的行业,尤其适合媒体简报分析、客户提案生成、舆情风

aobu0171的博客 426

GraphRAG Vectors:多后端向量存储架构与 GraphRAG 集成实战指南

GraphRAG Vectors(`graphrag-vectors`)是 GraphRAG 模块化体系中的一个独立 Python 包,为基于图的 RAG 系统提供统一、可插拔的向量存储抽象层。它内置 LanceDB、Azure AI Search、Azure Cosmos DB 三类后端实现,并通过"配置对象 + 工具函数"或"工厂直接创建"两种方式对外暴露统一的接入 API。读完本文,你将掌握

gitblog_01097的博客 642

生产级AI系统八大核心工具链实战指南

AI系统工程化不是模型调优,而是构建稳定、可观测、可协作的端到端流水线。从数据采集、清洗、向量检索到RAG编排与生产部署,关键在于用专业工具替代手工脚本,以数据契约保障质量、以混合检索提升召回、以分层监控实现故障快速定位。本文聚焦Scrapy、Great Expectations、Qdrant、LlamaIndex、Prefect、Docker、FastAPI和Prometheus等高频落地工具,详解其在真实业务中不可替代的技术价值——如Scrapy中间件对抗反爬、GE自动隔离脏数据、Qdrant+Lanc

cuyi7076的博客 341

八款开源向量数据库选型对比:从RAG到知识图谱的实战决策指南

向量数据库是AI应用处理非结构化数据的关键组件,其核心原理是将文本、图片等数据通过Embedding模型映射为高维向量,并借助HNSW等索引结构实现毫秒级相似度搜索。在RAG(检索增强生成)链路中,向量检索的准确性直接影响大模型输出的质量。面对多种开源方案,选型的本质是平衡数据规模、过滤条件复杂度和运维成本。传统的PostgreSQL扩展pgvector适用于中小型知识库,Milvus与Qdrant则分别擅长百亿级分布式检索和高性能过滤查询,而Chroma、LanceDB以轻量嵌入式取胜,Neo4j通过图数

weixin_34248705的博客 324

ollama+llm+springai集成

本文详细介绍了ollama+anything+llm本地环境搭建与RAG检索增强环境的配置方法。主要内容包括:1)ollama的安装配置及模型下载;2)与SpringAI的集成验证,包括ChatClient、ChatModel、工具调用和MCPServer的实现;3)AnythingLLM的安装使用,重点讲解Workspace工作区配置和RAG文档验证;4)常用ollama命令汇总。文章指出SpringAI文档更新滞后,建议直接使用HTTP接口而非依赖第三方包,并分享了实际开发中的经验教训和问题发现。

yanghuashuiyue的专栏 1214

2025向量数据库选型指南:8款开源方案对比与踩坑实践

向量数据库作为非结构化数据语义检索的基础设施,基于ANN近似最近邻搜索原理,广泛应用于RAG、推荐系统等场景。面对Milvus、Qdrant、pgvector等众多开源项目,选型需结合数据规模、查询模式与运维能力。例如,Milvus虽功能强大,但其分布式架构依赖etcd,安装与运维门槛较高;而pgvector、Chroma则适合轻量场景。本文从工程实践角度拆解8款主流向量数据库的定位与优劣,并提供真实踩坑经验,帮助读者避开选型陷阱。

weixin_33788244的博客 307

XERJ 视角下的 Rust 搜索与数据库生态:2025 年 Tantivy 系与无 GC 架构调研解析

本篇文章基于仓库内 [rust-search-ecosystem.md](https://link.gitcode.com/i/c9b7c6008eb970aea57a77a63a9215cb) 调研文档整理而成,该文档汇集了 2025 年针对 Rust 搜索与数据库生态的 8 组定向检索、60+ 条一手数据点,覆盖 Tantivy、Sonic、Quickwit、Meilisearch、SeekS

gitblog_00387的博客 403

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 353

AI 问数真的能替代 BI 报表吗?

AI问数赋能自然语言查询,提升临时分析效率,但无法替代传统报表。报表适用于稳定输出与持续监控,AI则擅长探索性提问。企业用好AI问数,关键在于夯实数据模型、统一指标口径、健全权限体系与结果校验机制。合理组合报表、仪表板与AI,才能实现高效、准确的业务洞察。

葡萄城技术团队博客 280

AI Agent之核心框架

A: 显式 Thought 有三类价值:可解释性(便于人类审计)、可调试性(定位哪一步选错工具)、学习信号(可做监督微调或评估中间步骤质量)。ReAct 把推理与 可执行行动 绑定,每一步行动后都有 真实 Observation 反馈,从而用工具结果约束生成,降低闭卷幻觉。做完不等于结束——还要 评估做得好不好,把 教训 记下来,下次 带着教训重试,反思作为 记忆,影响后续尝试的策略。工作流程:Action → Evaluation → Reflection → Retry。A: 普通 CoT 只在。

剑雨巍巍的博客 255

ChatGPT、Perplexity、Gemini 与 AI Overviews 引用对比:谁的引用更可信

AI 引擎的引用机制差异很大:ChatGPT 以行内引用加 Sources 列表呈现来源,Perplexity 几乎逐句可溯源,Gemini 在回答中内嵌相关来源链接,AI Overviews 则把多源聚合答案与来源列表一起放在搜索结果顶部。本文从引用透明度、来源偏好、可干预性 3 个维度对比这 4 个引擎,并给出 GEO 的 3 点启示,帮企业在多引擎环境下提升被引用的概率。

淡然一笑 的专栏 191
上一篇: 万字图文盘点RAG常见的100个核心概念:前 30 个
下一篇: 一张图讲清楚:KV Cache 为什么决定长上下文 Agent 的成本和速度
Python_金钱豹
博客等级 码龄5年 1万+粉丝 2840原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值