新兴的开源 AI Agent 智能体全景技术栈
新兴的开源 AI Agent 智能体全景技术栈
- LLMs:开源大模型
- 嵌入模型:开源嵌入模型
- 模型的访问和部署:Ollama
- 数据存储和检索:PostgreSQL, pgvector 和 pgai
- 后端:FastAPI
- 前端:NextJS
- 缺失的一环:评估和验证
- 创新开放获取:您将构建什么?
一套开源模型和工具,使任何开发者都能构建最先进的 AI Agent 智能体应用程序。
如果我们能回到过去,告诉软件工程师他们的应用程序将由神秘的 AI Agent 智能体驱动,我们对它的内部运作一无所知,并且他们为了体验的便利性,将最敏感的数据交给第三方,他们可能会摇头表示不相信。但现在的我们就是这样。
如今,全世界的开发者都在围绕 AI Agent
智能体重新想象他们的应用程序,而这默认意味着将专有的大语言模型(LLMs)
集成到每个方面。虽然像OpenAI
和 Anthropic
这样的专有 LLMs
点燃了 AI Agent
智能体革命,但它们也存在重大缺陷:令人望而却步的成本、数据隐私问题、供应商锁定以及缺乏可定制性。最初,为了革命性的能力而牺牲性能和控制似乎是一笔值得做的交易,但现在许多开发者希望有另一种方式。
但是革命有一种使曾经专属的东西民主化的方式。虽然最初的 AI Agent
智能体热点聚焦于专有模型,但真正的革命却是开源 LLMs
作为一种可行的替代方案,像 OpenAI
这样的专有模型一样飞速崛起。开源 AI Agent
智能体工具的创新也悄然爆发,这些工具使开发者能够利用开源 LLMs
增强的推理能力,并将其转化为有用的应用程序——从模型部署和托管工具到数据存储和检索,再到前端和后端网络框架。
以下是堆栈组件如何协同工作以赋予开发者权力并重塑 AI 未来的介绍:
这套开源的 AI Agent
智能体工具套件将部署、隐私和性能的完全控制权交还给开发者,而且不牺牲应用程序的智能。开发者现在有了构建和部署 AI Agent
智能体解决方案的工具,无论他们想以何种方式——本地、云端或边缘计算。他们保留了对数据的100%
控制权,不必担心“可信赖”的第三方可能会如何处理潜在敏感信息。这不仅仅是一个技术上的转变;这是一个文化上的转变,标志着回归开发者自主和创新的核心价值观。
这就是开源 AI Agent
智能体堆栈的承诺——一套使任何开发者都能构建最先进的 AI Agent 智能体应用程序的模型和工具。这不仅仅是一套技术;这是朝着让每个开发者都能接触创新迈出的一步。
LLMs:开源大模型
一套顶级的开源免费大语言模型(LLMs)
,与 OpenAI
、Anthropic
和Google
的专有大模型相匹敌。这些包括来自 Meta
的 Llama 3.3
,Mistral 模型家族
,Qwen 模型家族
,来自微软的 Phi 3
,以及 DeepMind 的 Gemma 2
。
开源大语言模型正在民主化 AI Agent
智能体的前沿。像来自 Meta
的 Llama 3
家族,Mistral 7B
和 Pixtral 12B
,来自阿里云的 Qwen 2.5
,来自微软的Phi 3
,以及来自 DeepMind 的 Gemma 2
等大模型可以免费下载和使用,任何拥有足够硬件资源的开发者都可以运行这些模型。
这些开源模型与专有解决方案竞争,提供以下优势:
- 第一、更大的数据控制权: 使用开源模型可以保持所有数据的私密性,消除对第三方的依赖,并为开发者提供更大的安全性和合规性保障。
- 第二、具有竞争力的推理性能: 开源模型在
MMLU
、HumanEval
和MATH Reasoning
等基准测试中越来越具有竞争力,表明开源模型与专有模型在推理能力上的差距正在缩小。 - 第三、部署的灵活性和可定制性: 您可以通过自行微调或访问公开可用的模型微调和变体,为特定用例适应模型,而无需受供应商限制。
- 第四、小型模型的效率和可扩展性: 较小的开源模型通常需要较少的计算能力,这使得它们在成本效益上更优,且在资源受限的设备或环境中更容易部署,同时在特定任务上仍能提供强大的性能。
嵌入模型:开源嵌入模型
一套顶级的开源嵌入模型。这些包括:Nomic
,来自 BAAI 的 BGE
,Sentence Transformers 家族
,以及 Jina AI
的模型等。
向量嵌入在现代 AI Agent
智能体应用程序中非常有用。它们为搜索和 RAG(检索增强生成)
功能提供支持,使 LLM
应用程序能够以更加扎实、上下文相关的答案进行响应。
就像在开源 LLMs
中一样,开源嵌入模型在与专有解决方案(比如:OpenAI 的 text-embedding-3
模型家族和 Cohere 的 embed-multilingual-v3.0
)的竞争中取得了重大进展。领先的开源嵌入模型包括:
- 第一、Sentence Transformers / SBERT: 开源嵌入模型家族,具有各种大小和专业化,从轻量级的 all-minilm 到多语言模型。
- 第二、Nomic:
Nomic Embed Text V1.5
支持可变嵌入大小(768, 512, 256, 128, 64)并在检索、相似性、聚类和分类任务上具有专长。它可以处理多达8,192个令牌的序列,并为文本和图像数据提供多模态能力。 - 第三、BGE (BAAI):
BGE(BAAI 通用嵌入)
模型将文本映射到密集向量,用于检索、分类和语义搜索任务。最新的 BGE-M3 模型支持超过100种语言,并能处理多达8,192个令牌的文档。它具有多功能性(密集检索、多向量检索、稀疏检索)能力。 - 第四、Jina AI:
Jina AI 的 jina-embeddings-v3
是一个拥有5.7亿参数的模型,支持89种语言,在30种核心语言上表现出色。它具有8,192个令牌的输入长度,可配置的输出维度高达1,024,并在查询-文档检索、聚类、分类和文本匹配方面具有专业能力。
模型的访问和部署:Ollama
Ollama
已经成为开发者访问和构建开源 LLMs 和嵌入模型的首选工具。
部署 AI Agent
智能体模型曾经就像试图从你的车库发射航天飞机一样。它需要一系列令人望而生畏的专业知识:博士团队、复杂的基础设施,以及会让大多数组织崩溃的资源。Ollama
彻底改变了游戏规则,允许开发者通过一个命令就能运行最先进的模型:
ollama run llama3.2
通过提供一个工具访问数百个 LLMs 和嵌入模型,抽象掉基础设施挑战,并简化部署流程,Ollama 将曾经看似不可逾越的事情变成了无缝且直观的过程。它赋予开发者专注于解决现实世界问题的能力,无论是在个人项目还是企业项目中,都在创新和实用性之间架起了桥梁。
借助开源模型和 Ollama
的简洁性,开发者获得了前所未有的自由,可以按照他们选择的方式部署 AI Agent
智能体。以一个案例为例:上面开源 LLMs 和嵌入模型部分提到的所有模型都可以通过 Ollama 获得!
数据存储和检索:PostgreSQL, pgvector 和 pgai
PostgreSQL
,这个开源数据库及其面向 AI Agent
智能体的开源扩展生态系统,比如:pgvector 和 pgai
,是希望构建 AI Agent
智能体应用程序的开发者的理想选择。
良好的数据和高效的检索是 AI Agent 智能体中 RAG 革命的核心,使开发者能够创建 LLM 应用程序,为用户提供高度准确、基于上下文、无幻觉的答案。
然而,最佳的 AI Agent 智能体应用程序不仅仅使用向量数据库——它们涉及非结构化、结构化以及应用数据的结合,以及在大型数据集上使用复杂过滤器进行向量搜索
。这样的检索系统确保您的用户获得最相关的上下文答案,但构建它们可能很复杂,在某些情况下,可能需要多个数据库系统和自定义数据管道:
- 您需要存储文档和其他源数据以创建要搜索的知识库。
- 您需要一种预处理这些数据的方法,从中创建向量嵌入,并随着知识库的变化保持这些嵌入同步。
- 您还需要能够存储和搜索向量嵌入,通常是在大规模下,并且需要在元数据和其他用户数据上应用复杂的过滤器。更不用说处理多租户、权限和访问控制、高可用性等实际关注点。
好消息是,世界上最受欢迎的数据库 PostgreSQL 正在从一个值得信赖的关系数据库转变为 支持结构化数据、非结构化数据和快速、准确的向量搜索的 AI Agent 智能体应用程序的数据层
。
PostgreSQL 是开源的,并且有一个开源扩展生态系统,使它成为支持 AI Agent 智能体应用程序存储和检索的首选数据库:
- 第一、向量搜索: 像
pgvector
和pgvectorscale
这样的扩展支持向量存储和相似性搜索,其性能超过了专业的向量数据库。 - 第二、易用性: 像
pgai
这样的扩展简化了在PostgreSQL
中访问LLMs
以对数据进行推理,而像pgai Vectorizer
这样的功能使嵌入创建和同步像传统数据库索引一样直观。 - 第三、集成和生态系统:
Pgai
对Ollama
的支持使得轻松访问最先进的开源模型进行嵌入创建或推理变得简单。
示例:使用几行 SQL 执行语义搜索:
CREATE TABLE IF NOT EXISTS blog ( id SERIAL PRIMARY KEY, title TEXT, authors TEXT, contents TEXT, metadata JSONB );
INSERT INTO blog (title, authors, contents, metadata) VALUES ('The Future of Artificial Intelligence', 'Dr. Alan Turing', 'As we look towards the future, artificial intelligence continues to evolve...', '{"tags": ["AI", "technology", "future"], "read_time": 12, "published_date": "2024-04-01"}');
--insert more data here
--Vectorize data in the contents column using models from OllamaSELECT ai.create_vectorizer( 'blog'::regclass, destination => 'blog_contents_embeddings', embedding => ai.embedding_ollama('nomic-embed-text', 768), chunking => ai.chunking_recursive_character_text_splitter('contents'));
-- Perform semantic searchSELECT b.title, b.contents, be.chunk, be.embedding <=> ai.ollama_embed('nomic-embed-text', 'What comes next in AI') as distance FROM blog_contents_embeddings be JOIN blog b ON b.id = be.id ORDER BY distance LIMIT 3;
后端:FastAPI
你的 AI Agent 智能体应用程序后端将智能模型连接到面向用户的应用程序,而 FastAPI 已经成为开发者的首选框架。它提供以下功能:
- 第一、速度和简洁性: 异步编程确保了低延迟和高吞吐量。
- 第二、开发者友好的设计: 自动 API 文档和类型提示使得快速迭代成为可能。
- 第三、无缝集成: 非常适合实时应用程序,比如:聊天机器人、推荐引擎和预测分析。
FastAPI
消除了后端瓶颈,允许开发者轻松地将 AI Agent
智能体应用程序从原型扩展到生产。想象一下,部署一个由开源模型驱动的推荐系统。FastAPI
的异步功能确保用户请求能够即时处理,而其自动文档保持了协作的无缝性。这些特性共同将复杂的后端工作流程转变为可管理、高效的系统。
前端:NextJS
AI Agent 智能体应用的前端需要处理复杂的状态管理和动态更新,而 NextJS已经成为生产部署中首选的 React 框架。
它提供了一系列有用的功能:
- 第一、混合渲染: 服务器端渲染
(SSR)
和客户端静态渲染为每个页面提供了灵活的渲染和缓存选项。Next.js
提供了强大的服务器端功能,这对于AI Agent
智能体应用尤其有益。框架的SSR
有助于高效地管理计算密集型的 AI 任务,同时减轻客户端设备的负载。这在处理复杂的 AI 模型交互和数据处理时尤其重要。 - 第二、实时流和更新: 它无缝集成各种实时解决方案,支持流畅的动态交互,这对于 AI 聊天和其他显示动态内容的 UI 特别重要。
- 第三、与 Vercel AI SDK 集成:
Vercel AI SDK
(也是开源的)专为使用Next.js
创建AI Agent
智能体应用而构建,并支持客户端和服务器端的 AI 功能。它与Ollama
集成得很好,并提供了处理 AI 模型推理、流式响应和与提供商连接的实用工具。
缺失的一环:评估和验证
虽然开源 AI Agent
智能体堆栈已经成熟,但评估仍然是一个关键挑战。像LangFuse
和 Arize
的 Phoenix
这样的项目提供了希望,但生态系统仍然缺乏一个全面的框架来测试和验证 AI 模型。这个空白代表了一个创新的机会——社区有机会定义可靠、现实世界的 AI Agent
智能体应用。
为什么这很重要:与传统应用不同,大语言模型(LLMs)
是非确定性的,这意味着如果你在没有评估和验证的情况下部署一个 AI Agent
智能体应用,你就无法判断你的应用的表现。一个健壮的评估系统对于确保你的应用现在以及随着系统发展都能表现良好至关重要。
我们应该说,鉴于开源社区在创建可观察性和监控工具方面的强大记录,我们觉得这种能力上的空白特别引人入胜。我们认为,总的来说,评估生态系统还处于起步阶段,正确的做法尚未被发现。我们怀疑当前的系统过于一刀切,低估了跨项目评估需求的多样性。需要的是一种类似于 DevOps
中 GitOps
革命的视角转变,这也是为什么我们特别兴奋地看到在这个领域开源驱动的创新被释放出来。
创新开放获取:您将构建什么?
开源 AI Agent
智能体堆栈不仅仅是一系列工具的集合——它是一场运动
。开发者现在可以自由地构建、创新和控制他们的 AI Agent
智能体应用程序,无需担心供应商锁定或隐私问题。
通过开源 AI,您可以获得:
- 第一、 自由部署在任何地方——本地、云端或边缘。
- 第二、 对数据的完全控制——不与第三方共享。
- 第三、 根据您的需求进行定制。
- 第四、 与全球社区合作。
这不仅仅是关于技术;它是关于创造属于您的东西。无论您是部署模型、构建RAG 应用还是推出新的 AI Agent 智能体服务,开源堆栈都让您按照自己的方式去做。
相关文章:

新兴的开源 AI Agent 智能体全景技术栈
新兴的开源 AI Agent 智能体全景技术栈 LLMs:开源大模型嵌入模型:开源嵌入模型模型的访问和部署:Ollama数据存储和检索:PostgreSQL, pgvector 和 pgai后端:FastAPI前端:NextJS缺失的一环:评估和…...

统计学习方法(第二版) 概率分布学习
本文主要介绍机器学习的概率分布,帮助后续的理解。 定义直接从书上搬的想自己写,但没有定义准确,还浪费事件,作为个人笔记,遇到速查。 目录 一、二点分布(0-1分布、伯努利分布) 二、二项分布…...

淺談Cocos2djs逆向
前言 簡單聊一下cocos2djs手遊的逆向,有任何相關想法歡迎和我討論^^ 一些概念 列出一些個人認為比較有用的概念: Cocos遊戲的兩大開發工具分別是CocosCreator和CocosStudio,區別是前者是cocos2djs專用的開發工具,後者則是coco…...

【ROS2】RViz2加载URDF模型文件
1、RViz2加载URDF模型文件 1)运行RViz2 rviz22)添加组件:RobotModel 3)选择通过文件添加 4)选择URDF文件,此时会报错,需要修改Fixed Frame为map即可 5)因为没有坐标转换,依然会报错,下面尝试解决 2、运行坐标转换节点 1)运行ROS节点:robot_state_publishe...

Unity导入特效,混合模式无效问题
检查spine导出设置与Unity导入设置是否一致 检查Blend Mode Materials是否勾选 检查是否使用导入时产生的对应混合模式的材质,混合模式不适用默认材质 这里选导入时生成的材质...

el-table自定义按钮控制扩展expand
需求:自定义按钮实现表格扩展内容的展开和收起,实现如下: 将type“expand”的表格列的宽度设置为width"1",让该操作列不展示出来,然后通过ref动态调用组件的内部方法toggleRowExpansion(row, row.expanded)控…...
opencv CV_TM_SQDIFF未定义标识符
opencv CV_TM_SQDIFF未定义标识符 opencv4部分命名发生变换,将CV_WINDOW_AUTOSIZE改为WINDOW_AUTOSIZE;CV_TM_SQDIFF_NORMED改为TM_SQDIFF_NORMED。...
2024acl论文体悟
总结分析归纳 模型架构与训练方法:一些论文关注于改进大语言模型的架构和训练方法,以提高其性能和效率。例如,“Quantized Side Tuning: Fast and Memory-Efficient Tuning of Quantized Large Language Models”提出了一种量化侧调优方法&a…...

【Git原理与使用】版本回退reset 详细介绍、撤销修改、删除文件
目录 一、版本回退 reset 1.1 指令: 1.2 参数说明: 1.3 演示: 二、撤销修改 情况一:对于工作区的代码,还没有 add 情况二:已经 add ,但没有 commit 情况三:已经 add &…...
反规范化带来的数据不一致问题的解决方案
在数据库设计中,规范化(Normalization)和反规范化(Denormalization)是两个相互对立但又不可或缺的概念。规范化旨在消除数据冗余,确保数据的一致性和准确性,但可能会降低查询效率。相反…...
【Android】直接使用binder的transact来代替aidl接口
aidl提供了binder调用的封装,有的时候,比如: 1. 懒得使用aidl生成的接口文件(确实是懒,Android studio中aidl生成接口文件很方便) 2. 服务端的提供者只公开了部分接口出来,只给了调用编号和参…...

Python机器学习笔记(十八、交互特征与多项式特征)
添加原始数据的交互特征(interaction feature)和多项式特征(polynomial feature)可以丰富特征表示,特别是对于线性模型。这种特征工程可以用统计建模和许多实际的机器学习应用中。 上一次学习:线性模型对w…...

《跟我学Spring Boot开发》系列文章索引❤(2025.01.09更新)
章节文章名备注第1节Spring Boot(1)基于Eclipse搭建Spring Boot开发环境环境搭建第2节Spring Boot(2)解决Maven下载依赖缓慢的问题给火车头提提速第3节Spring Boot(3)教你手工搭建Spring Boot项目纯手工玩法…...
【AI进化论】 如何让AI帮我们写一个项目系列:将Mysql生成md文档
一、python脚本 下面给出一个简易 Python 脚本示例,演示如何自动获取所有表的结构,并生成一份 Markdown 文件。你可根据自己的需求做修改或使用其他编程语言。 import mysql.connector# ------------------------ # 1. 连接数据库 # -----------------…...

(已开源-AAAI25) RCTrans:雷达相机融合3D目标检测模型
在雷达相机融合三维目标检测中,雷达点云稀疏、噪声较大,在相机雷达融合过程中提出了很多挑战。为了解决这个问题,我们引入了一种新的基于query的检测方法 Radar-Camera Transformer (RCTrans)。具体来说: 首先设计了一个雷达稠密…...

Elasticsearch:在 HNSW 中提前终止以实现更快的近似 KNN 搜索
作者:来自 Elastic Tommaso Teofili 了解如何使用智能提前终止策略让 HNSW 加快 KNN 搜索速度。 在高维空间中高效地找到最近邻的挑战是向量搜索中最重要的挑战之一,特别是当数据集规模增长时。正如我们之前的博客文章中所讨论的,当数据集规模…...
unittest VS pytest
以下是 unittest 和 pytest 框架的对比表格: 特性unittestpytest设计理念基于类的设计,类似于 Java 的 JUnit更简洁,基于函数式编程设计,支持类和函数两种方式测试编写需要继承 unittest.TestCase 类,方法以 test_ 开…...

Tableau数据可视化与仪表盘搭建-基础图表制作
目录 对比分析:比大小 柱状图 条形图 数据钻取 筛选器 热力图 气泡图 变化分析:看趋势 折线图 预测 面积图 关系分布:看位置 散点图 直方图 地图 构成分析:看占比 饼图 树地图 堆积图 对比分析:比大…...

Center Loss 和 ArcFace Loss 笔记
一、Center Loss 1. 定义 Center Loss 旨在最小化类内特征的离散程度,通过约束样本特征与其类别中心之间的距离,提高类内特征的聚合性。 2. 公式 对于样本 xi 和其类别yi,Center Loss 的公式为: xi: 当前样本的特征向量&…...
3125: 【入门】求1/1+1/2+2/3+3/5+5/8+8/13+13/21……的前n项的和
文章目录 题目描述输入输出样例输入样例输出 题目描述 求1/11/22/33/55/88/1313/2121/34……的前n项的和。 输入 第1行:一个整数n(1 < n < 30 )。 输出 一行:一个小数,即前n项之和(保留3位小数&…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...

算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...

技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...