从 RAG 到 Deep Research: 大模型又出大招?

前戏 随着人工智能技术的飞速发展, 大语言模型(LLM)逐渐成为研究和应用的热点。从最初的检索增强生成(RAG)技术到如今的深度研究(Deep Research), LLM 技术经历了多次重要的迭代与演进。本文将带您一探究竟, 回顾这一技术的发展历程。 RAG 技术的兴起与发展 RAG 的起源与原理 检索增强生成(Retrieval-Augmented Generation, RAG)技术最早于 2021 年被提出。 RAG 的核心思想, 是通过检索外部知识库中的相关信息, 增强语言模型的生成能力。RAG 技术的出现, 为 LLM 的发展奠定了重要的基础, 一定程度上解决了大模型由于私域知识不足, 往往胡编乱造的现象。 RAG 的范式演变 最初, RAG 主要被用于 LLM 的预训练阶段, 随后逐渐扩展到微调与推理任务。 2024 年, RAG 技术出现了多种新的范式: Naive RAG: 最基础的检索增强生成方法, 直接将检索到的信息与模型输入结合。 Advanced RAG: 引入更复杂的检索策略和生成机制, 提升模型性能。 Modular RAG: 将 RAG 系统模块化, 使其更灵活地适应不同任务。 Graph RAG: 融合知识图谱, 进一步增强模型对知识的结构化理解和推理能力。 Agentic RAG: 作为最新的范式, Agentic RAG 通过集成自主 AI 代理, 实现了动态管理检索策略、迭代细化上下文理解, 并适应性地调整工作流程。 LLM 技术的快速迭代 模型架构的创新 随着 RAG 技术的不断发展, LLM 本身也在架构上进行了多次创新。例如, DeepSeek-V3 采用了基于 MoE(Mixture of Experts)架构的设计, 总参数量达到 671B。这种架构通过激活部分参数, 既提升了模型性能, 又降低了计算成本。此外, DeepSeek-V3 还引入了无辅助损失的负载均衡策略和多 token 预测训练目标, 进一步优化了模型的训练效率。 ...

二月 24, 2025 · 2 分钟 · 294 字 · zhu733756

使用 Milvus 构建图片搜索引擎

前戏 在当今数字化时代,图片数据呈爆炸式增长,如何从海量图片中快速准确地找到相似图片成为了一个重要问题。Milvus 作为一个高性能的向量数据库,为解决这一问题提供了强大的支持。本文将详细介绍如何使用 Milvus 构建一个图片搜索引擎,让你能够轻松地在图片海洋中找到“知音”。 Milvus 简介 Milvus 是专为处理海量向量数据而设计的数据库,它构建在 Faiss、HNSW、DiskANN、SCANN 等流行的向量搜索库之上,能够高效地在包含数百万、数十亿甚至数万亿向量的数据集上进行相似性搜索。Milvus 支持数据分片、流式数据摄取、动态 Schema、结合向量和标量数据的搜索等多种高级功能,采用共享存储架构,计算节点具有存储和计算分解及横向扩展能力,非常适合用于构建图片搜索引擎。 图片搜索引擎架构 https://github.com/milvus-io/bootcamp/blob/master/applications/image/reverse_image_search/README.md 上面的例子使用 towhee 通过 ResNet50 提取图像特征,并使用 Milvus 构建了一个可以执行反向图像搜索的系统。 Towhee 由四大模块构成:算子、流水线、数据处理 API 和执行引擎。 算子是基础组件,可为神经网络模型、数据处理方法或 Python 函数。流水线由多个算子组成,形成有向无环图,实现复杂功能如特征提取等。数据处理 API 提供多种数据转换接口,用于构建数据处理管道,处理非结构化数据。执行引擎负责流水线实例化、任务调度、资源管理及性能优化,有轻量级本地引擎和高性能的 Nvidia Triton 引擎。 系统架构如下: 数据源 https://drive.google.com/file/d/1n_370-5Stk4t0uDV1QqvYkcvyV8rbw0O/view?usp=sharing 环境准备 安装 Milvus 你可以选择在本地安装 Milvus Lite,也可以在 Docker 或 Kubernetes 上部署高性能的 Milvus 服务器。可以参考这篇文章。 服务部署 https://github.com/milvus-io/bootcamp/blob/master/applications/image/reverse_image_search/docker-compose.yaml 这个 docker-compose.yaml 文件是一个用于部署Milvus 和相关组件的配置文件。主要包括: etcd minio milvus-standalone mysql webserver webclient 我们可以把它缩减成这样: mysql webserver webclient 详见: https://github.com/zhu733756/cloud-database-tools/blob/master/milvus/img-search/docker/docker-compose.yaml 需要修改这几个参数: environment: MILVUS_HOST: '172.18.0.4' MILVUS_PORT: '30774' MYSQL_HOST: '172.16.238.11' 配置 Milvus 这个 CR 为 NodePort: ...

一月 13, 2025 · 2 分钟 · 394 字 · zhu733756

快速尝鲜! k8s部署向量数据库milvus实用指南

前戏 过去两年 AI 大火, 向量数据库 milvus 赋能 RAG 向量搜索加速, 这玩意怎么在 k8s 上部署? milvus Milvus 构建在 Faiss、HNSW、DiskANN、SCANN 等流行的向量搜索库之上, 专为在包含数百万、数十亿甚至数万亿向量的密集向量数据集上进行相似性搜索而设计。 支持数据分片、流式数据摄取、动态Schema、结合向量和标量数据的搜索、多向量和混合搜索、稀疏向量和其他许多高级功能。 采用共享存储架构, 其计算节点具有存储和计算分解及横向扩展能力。 官方建议使用 Kubernetes 部署 Milvus。 创建集群 本文使用 kind 来部署 k8s 集群。 下载 kind 和 helm 此处省略细节, 具体可参考前文。 一行命令, 创建一个集群 准备配置文件: kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane extraPortMappings: - containerPort: 31000 # 将主机 31000 端口映射到容器的 31000 端口 hostPort: 31000 listenAddress: '0.0.0.0' # Optional, defaults to "0.0.0.0" protocol: tcp # Optional, defaults to tcp - role: worker - role: worker - role: worker kubeadmConfigPatches: - | apiVersion: kubeadm.k8s.io/v1beta3 kind: ClusterConfiguration metadata: name: config networking: serviceSubnet: 10.0.0.0/16 imageRepository: registry.aliyuncs.com/google_containers nodeRegistration: kubeletExtraArgs: pod-infra-container-image: registry.aliyuncs.com/google_containers/pause:3.1 - | apiVersion: kubeadm.k8s.io/v1beta3 kind: InitConfiguration metadata: name: config networking: serviceSubnet: 10.0.0.0/16 imageRepository: registry.aliyuncs.com/google_containers 用以上配置文件, 执行集群创建命令, 可以得到一个 4 节点的集群: ...

一月 6, 2025 · 6 分钟 · 1206 字 · zhu733756

什么是大模型RAG检索、增强、生成? 专有名词一次性讲完!

前戏 前文, 我们使用ollama离线部署了一个qwen-5b模型, 今天我们对RAG一些名词进行系统解释, 白话文解释, 再也不用懵逼了。 RAG是Retrieval-Augmented Generation的缩写, 中文意思是检索增强生成, 顾名思义, 没啥争议。 举个不恰当的例子, 想象你在写一篇关于小狗的文章, 但你对小狗的知识有限。RAG就像你使用搜索引擎查找关于小狗的信息, 然后将这些信息作为参考资料,来帮助你写出更全面的文章。至于增强的过程, 就是你通过整理这些参考资料, 去掉一些没用的, 甚至可能还会返回去图书馆找资料, 只为了给你的读者具象化地讲解, 最好是图文并茂。至于生成, 就是把检索增强后的文档丢给大模型, 然后由大模型回答问题。 除了这三个大概念外, 其实还有些预处理过程, 也是必不可少的优化手段。 我们按照顺序一一厘清, 尽可能覆盖所有的细节。 预处理 预处理是指用户输入和知识库构建的过程。可能涉及到的一些步骤如下。 数据清理 数据清理是RAG中一个重要的步骤, 它包括对原始数据进行预处理, 包括文本清理、实体识别、实体链接等。 分块 在 RAG 系统中, “分块”(Chunking)是指将长文本或文档分割成更小、更易于管理和处理的片段或块的过程。分块有利于提高检索效率, 改善上下文管理, 增强检索相关性。 以下是分块的一些优化手段: 固定大小分块(Fixed-size Chunking): 将文档分割成等长的块, 每个块包含固定数量的单词或字符。 结构化分块(Structured Chunking):根据文档的结构(如段落、标题、句子)来分割文档。 上下文丰富的分块(Context-rich Chunking):在分块时, 保留一些额外的上下文信息, 以便每个块都能提供足够的信息。确定合适的重叠量, 以便在块之间保持上下文的连贯性。 语义分块(Semantic Chunking): 基于文本的语义内容来分割文档, 确保每个块包含相关的概念或主题。使用 NLP 技术(如主题建模)来识别和分割语义上连贯的段落。 多模态分块(Multimodal Chunking)对于包含多种类型内容(文本、图像、视频)的文档, 采用适合不同模态的分块策略。为每种内容类型定制分块方法, 以保留各自的语义信息。 … 知识库构建 知识库是RAG的核心, 它包含所有与用户需求相关的信息, 如文档、问题、实体等。 实体识别和链接: 在文本中识别出实体(如人名、地点、组织等), 并将它们与知识库中的相应条目链接起来。 知识提取: 从文本中提取结构化信息, 如事实、关系和概念, 并将它们存储在知识库中。 知识表示和存储: 选择合适的数据模型来表示知识, 如语义网络、图数据库、向量数据库等。 索引构建: 为知识库中的数据构建索引, 以加快检索速度。 检索分类器 确定哪些请求是否要走检索, 大模型的知识储备是否已经足够。如果已经足够, 直接跳过检索, 避免频繁的检索导致性能下降。 ...

十二月 30, 2024 · 3 分钟 · 491 字 · zhu733756