AI项目从入门到上线03-AI项目技术栈选型——大模型/向量库/框架/嵌入模型全对比
1、AI程序员系列文章
2、AI面试系列文章
3、AI编程系列文章
你别不信——90%的AI项目死在技术选型上,而不是代码写得烂。
目录
一、技术栈全景图:一张图看懂AI项目的五脏六腑
二、大模型选型:GPT vs 开源,这不是一道技术题
💡 效率技巧:选大模型的"三步决策法"
三、向量数据库选型:谁才是你的"第一向量库"
ChromaDB:开发首选,轻量到没朋友
Milvus:生产环境的老大哥
FAISS:Meta出品的内存级向量索引
Pinecone:不想管运维的有钱人选择
四、框架选型:LangChain一统天下还是新王当立
LangChain:AI框架界的"瑞士军刀"
LlamaIndex:RAG领域的"专精特新"
LangGraph:Agent时代的新选择
框架选型一句话指南
五、嵌入模型选型:文本变向量的"翻译官"之战
BGE-M3:中文嵌入模型的"六边形战士"
text-embedding-ada-002:OpenAI全家桶的首选
m3e:中文中小项目的性价比之选
六、OCR工具选型:中文识别的"卷王之争"
PaddleOCR:中文OCR的绝对王者
Tesseract:英文场景的老牌劲旅
七、PDF解析工具:文档智能的"第一道坎"
PyMuPDF:最快的文本提取器
Camelot:表格提取的王者
真实场景的工具组合拳
八、选型决策流程:一张流程图帮你做决定
九、技术栈组合拳:4套开箱即用的推荐方案
方案A:快速原型(3天出Demo)
方案B:生产级RAG(上线水准)
方案C:100%私有化部署(数据不出门)
方案D:多Agent智能体
技术栈选型速查矩阵
开篇:技术选型的成本比你想象的贵得多
你是否遇到过这种情况——项目写了三分之一,发现选的那个框架根本不支持你要的功能,然后全部推倒重来?
网上搜"AI项目技术选型",出来的要么是2023年的老文章,要么是各家厂商的"王婆卖瓜"。你越看越懵:LangChain还是LlamaIndex?ChromaDB还是Milvus?PaddleOCR还是Tesseract?
本文给你一份能直接拍板的选型手册。不讲虚的,只讲每个工具的定位、适用场景、以及我踩过的坑。读完本文,你就能在15分钟内完成一个AI项目的技术选型决策。
选型就像买房子——贵的未必适合你,但选错了,搬家的成本远高于当初多看两眼。
一、技术栈全景图:一张图看懂AI项目的五脏六腑
在进入具体对比之前,先用一张图建立全局认知。一个典型的AI项目(以RAG智能应用为例),技术栈可以分6层:
graph TB subgraph 应用层 A1[Web前端 Vue/React] A2[API服务 FastAPI/Flask] end subgraph 框架编排层 B1[LangChain / LlamaIndex] B2[LangGraph Agent编排] end subgraph 大模型层 C1[云端API GPT-4o/Claude3.5/DeepSeek/通义千问] C2[本地部署 Llama3/Qwen 开源模型] end subgraph 嵌入模型层 D1[BGE-M3 / m3e / text-embedding-ada-002] end subgraph 数据存储层 E1[向量库 ChromaDB/Milvus/FAISS/Pinecone] E2[传统库 PostgreSQL/Redis/MinIO] end subgraph 数据接入层 F1[文档解析 PyMuPDF/pdfplumber/Camelot] F2[OCR识别 PaddleOCR/Tesseract] end A1 --> A2 A2 --> B1 A2 --> B2 B1 --> C1 B1 --> C2 B1 --> D1 D1 --> E1 A2 --> E2 F1 --> A2 F2 --> A2这张图值得你右键保存。你的每一个选型决策,都是在上面这6层里挑一个或多个工具。
程序员选技术栈就像选对象——每一层都得对上,差一层都不和谐。
二、大模型选型:GPT vs 开源,这不是一道技术题
先看一张"看了就不纠结"的对比表:
| 维度 | GPT-4o | Claude 3.5 Sonnet | DeepSeek-V2 | 通义千问2.5 | Llama3 开源 |
|---|---|---|---|---|---|
| 调用方式 | API付费 | API付费 | API付费+开源 | API付费 | 本地自部署 |
| 中文能力 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
| 推理能力 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
| 成本(1M tokens) | 输入$5/输出$15 | 输入$3/输出$15 | ¥1/¥2 | ¥2/¥8 | 硬件成本 |
| 上下文窗口 | 128K | 200K | 128K | 128K | 8K(默认) |
| 适合场景 | 复杂推理、代码生成 | 长文档理解、总结 | 中文场景、高性价比 | 阿里云生态 | 数据敏感、离线场景 |
💡 效率技巧:选大模型的"三步决策法"
第一步:你的数据能不能上云?
- 能 → 优先云端API(省事、效果好)
- 不能(金融/军工/隐私数据)→ 开源本地部署
第二步:你的预算有多少?
- 预算充足 → GPT-4o或Claude 3.5,追求效果天花板
- 预算紧张 → DeepSeek,中文效果好且价格是GPT的1/10
第三步:你的场景是什么?
- 代码生成/复杂推理 → GPT-4o
- 长文档理解/合同分析 → Claude 3.5(200K上下文窗口真香)
- 中文RAG问答/客服 → DeepSeek 或 通义千问
- 完全离线/私有化部署 → Llama3 或 Qwen开源版
⚠️避坑警告:千万不要一上来就选开源模型自部署!我就见过一个团队花了两周搭GPU服务器跑Llama3,结果效果不如DeepSeek API一个晚上调出来的。先API验证业务逻辑通了,再考虑是否私有化部署。
说白了,大模型选型核心就一句话:
- 追求效果且不差钱→ GPT-4o / Claude 3.5
- 追求性价比→ DeepSeek
- 阿里云全家桶→ 通义千问
- 数据不出门→ 开源模型本地部署
三、向量数据库选型:谁才是你的"第一向量库"
向量库是RAG系统的"记忆中枢"。你的文档片段变成向量后,就存在这里。选错了,检索慢、结果差、部署烦。
先看一个"从入门到入土"的发展路线:
ChromaDB(开发阶段)→ FAISS(快速迭代)→ Pinecone(快速上线)→ Milvus(生产稳定)| 维度 | ChromaDB | FAISS | Pinecone | Milvus |
|---|---|---|---|---|
| 类型 | 嵌入式向量库 | 内存向量索引 | 托管云服务 | 分布式向量数据库 |
| 部署难度 | ⭐(pip install完事) | ⭐ | ⭐(注册即用) | ⭐⭐⭐⭐ |
| 性能 | 中等 | 高(纯内存) | 高(托管优化) | 最高(分布式) |
| 扩展性 | 单机 | 单机内存 | 弹性伸缩 | 水平扩展 |
| 持久化 | ✅ SQLite | ❌ 纯内存(需手动) | ✅ 自动 | ✅ 多种后端 |
| 适合阶段 | 开发/原型 | 快速实验 | 快速上线 | 生产环境 |
| 上手时间 | 10分钟 | 30分钟 | 15分钟 | 半天到一天 |
ChromaDB:开发首选,轻量到没朋友
ChromaDB是我的首选推荐——因为在开发阶段,你最需要的是快,不是复杂。
# 10分钟上手ChromaDB import chromadb from chromadb.utils import embedding_functions # 1. 创建客户端(一行代码) client = chromadb.PersistentClient(path="./my_vectordb") # 2. 创建collection(自带embedding) collection = client.create_collection( name="my_docs", embedding_function=embedding_functions.SentenceTransformerEmbeddingFunction( model_name="BAAI/bge-m3" ) ) # 3. 写入数据(自动向量化) collection.add( documents=["这是一个测试文档", "另一个文档内容"], metadatas=[{"source": "test1"}, {"source": "test2"}], ids=["id1", "id2"] ) # 4. 查询(直接返回最相关的) results = collection.query( query_texts=["测试"], n_results=2 )ChromaDB 的开发体验一个字:“爽”。不需要Docker、不需要K8s、不需要配置网络——pip install + 三行代码,向量库就起来了。
Milvus:生产环境的老大哥
当你的数据量从几千条涨到几百万条,请求量从每分钟10次涨到每秒1000次,ChromaDB开始吃力了。
这时候该Milvus出场了:
- 分布式架构:支持数据分片、多副本
- 多种索引:IVF_FLAT、HNSW、DiskANN
- 混合检索:向量检索 + 标量过滤(比如"搜某日期之后的文档")
- 云原生:完美适配Kubernetes
⚠️避坑警告:不要在项目初期上Milvus!我见过一个团队,刚写了两周代码,花三天搭了Milvus集群,结果需求变了四五轮,数据结构全改了,Milvus的配置也跟着调了又调。开发阶段用ChromaDB,等业务稳定了再迁Milvus,省下的时间够你写两个迭代了。
FAISS:Meta出品的内存级向量索引
FAISS不是数据库,是一个向量相似度检索库——数据在内存里,重启就没了。适合:
- 快速实验(不用管持久化)
- 数据量小但要求检索速度极快
- 嵌入到已有系统中
Pinecone:不想管运维的有钱人选择
全托管,注册就能用,自带监控。代价是:
- 贵——免费版限制多,企业版按量计费
- 数据不在自己手里——合规敏感的项目没法用
💡效率技巧:如果你在公司内部做项目,优先问运维能不能给你搭Milvus。如果能,直接用。如果不能,开发期ChromaDB→上线期让领导批预算上Pinecone。这是成本最低、速度最快的路径。
四、框架选型:LangChain一统天下还是新王当立
框架层是AI项目的"骨架"。三个主流选手:
| 维度 | LangChain | LlamaIndex | LangGraph |
|---|---|---|---|
| 定位 | 通用AI应用框架 | RAG专项框架 | Agent工作流编排 |
| 核心优势 | 生态最全,什么都能做 | RAG一条龙,文档处理极强 | 状态机编排Agent |
| 学习曲线 | 中等偏陡(太抽象) | 低(专注RAG) | 中等 |
| 社区规模 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ |
| 适合场景 | 复杂链式调用、多模型切换 | 文档问答、知识库 | 多Agent协作、复杂工作流 |
| 不适合 | 简单RAG(杀鸡用牛刀) | 非RAG场景 | 简单链式任务 |
LangChain:AI框架界的"瑞士军刀"
LangChain的定位是做AI应用的"万能胶水"——连接大模型、向量库、工具、记忆,什么都能接。
优点:你想得到的集成,LangChain都有。OpenAI、Claude、ChromaDB、Pinecone——全都ready。
缺点:抽象层太多,一个简单的调用被包装成三四层。有时候你看文档看了一个小时,发现核心逻辑就三行代码。
# LangChain风格:链式调用 from langchain.chains import RetrievalQA from langchain_openai import ChatOpenAI from langchain_chroma import Chroma # 这个写法优雅,但新手可能不明白每一步在干什么 qa_chain = RetrievalQA.from_chain_type( llm=ChatOpenAI(model="gpt-4o"), retriever=Chroma(...).as_retriever(), chain_type="stuff" )用LangChain的感觉就像开一辆功能拉满的SUV——方向盘、中控、仪表盘一堆按钮,但你可能90%的时间只用到油门和刹车。
LlamaIndex:RAG领域的"专精特新"
如果你的项目就是做RAG,LlamaIndex可能比LangChain更顺手:
- 文档加载器:支持100+格式,开箱即用
- 索引策略:向量索引、树索引、关键词索引,针对不同场景
- 查询引擎:子问题分解、递归检索,比LangChain的RAG更细腻
# LlamaIndex风格:针对RAG做了大量优化 from llama_index.core import VectorStoreIndex, SimpleDirectoryReader # 这两行代码就完成了"读取文档→分块→向量化→索引"全流程 documents = SimpleDirectoryReader("./data").load_data() index = VectorStoreIndex.from_documents(documents) # 查询也极其简单 query_engine = index.as_query_engine() response = query_engine.query("这份合同违约条款是什么")LlamaIndex 之于 RAG,就像螺丝刀之于拧螺丝——专一、高效、不出错。
LangGraph:Agent时代的新选择
如果你要做多Agent协作(比如一个Agent负责检索、一个负责分析、一个负责生成报告),LangGraph是最佳选择。
- 状态机模型:把Agent工作流建模为图,每个节点是一个处理步骤
- 条件分支:根据中间结果动态决定下一步
- 循环支持:支持迭代优化(比如检索→评估→检索→再评估)
⚠️避坑警告:不要一上来就LangGraph!Agent编排听着很酷,但80%的AI项目根本不需要多Agent。先用LangChain或LlamaIndex把最核心的"输入→检索→输出"链路跑通,项目成熟了再考虑加Agent。过早优化是万恶之源,过早上Agent是万恶之源PLUS版。
框架选型一句话指南
- 做RAG知识库→ LlamaIndex(专、快、好)
- 做复杂AI应用(多模型、多工具、多链)→ LangChain(生态大)
- 做多Agent协作→ LangGraph(Agent时代的React)
- 简单需求、追求灵活→ 自研(直接调API,零框架依赖)
五、嵌入模型选型:文本变向量的"翻译官"之战
嵌入模型是整个RAG系统里最被低估的一环。它负责把"今天天气真好"翻译成[0.23, -0.87, 0.45, …]这样的向量。选错了嵌入模型,后面检索效果差到你怀疑人生。
| 维度 | text-embedding-ada-002 | BGE-M3 | m3e-base |
|---|---|---|---|
| 开发者 | OpenAI | BAAI(智源) | 社区 |
| 向量维度 | 1536 | 1024 | 768 |
| 最大输入长度 | 8191 tokens | 8192 tokens | 512 tokens |
| 中文优化 | 一般 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| 多语言 | ✅ | ✅(100+语言) | ⭐中文为主 |
| 部署方式 | API付费 | 本地/API | 本地 |
| 成本 | $0.10/1M tokens | 免费(本地) | 免费(本地) |
| MTEB中文排名 | 中游 | 顶尖 | 中上 |
BGE-M3:中文嵌入模型的"六边形战士"
如果你的项目主要是中文,BGE-M3是我的首选推荐,原因很简单:
- 中文效果顶尖:MTEB中文榜单常年前三
- 支持100+语言:混语言场景也不怕
- 本地免费部署:数据不需要传到OpenAI
- 1024维:比1536维的ada更省存储,检索还快
# 使用BGE-M3(一行代码接入) from sentence_transformers import SentenceTransformer model = SentenceTransformer("BAAI/bge-m3") # 中英文混合也不怕 texts = ["如何配置向量数据库?", "How to configure vector database?"] embeddings = model.encode(texts) print(embeddings.shape) # (2, 1024)text-embedding-ada-002:OpenAI全家桶的首选
如果你已经在用OpenAI的API,ada-002的优点是零额外配置:
- 和GPT API统一计费,一张账单
- 不需要自己部署,调API就行
- 1536维,精度高但存储和检索开销也大
💡效率技巧:如果你的项目已经在用OpenAI,先用ada-002快速出效果。等效果验证了,再考虑换成BGE-M3降低成本。不要在还没验证业务的阶段就纠结模型精度差异——先把MVP跑起来。
m3e:中文中小项目的性价比之选
m3e是社区维护的中文嵌入模型,768维。优点是极致轻量——模型小、推理快、部署简单。适合:
- 纯中文场景
- 数据量不大(<10万条)
- 对检索精度要求不是极致
# m3e使用示例 from sentence_transformers import SentenceTransformer model = SentenceTransformer("moka-ai/m3e-base") embeddings = model.encode(["这是一个测试句子"]) # output: (1, 768) 比BGE-M3更小更快六、OCR工具选型:中文识别的"卷王之争"
如果你的项目需要处理扫描件PDF或图片中的文字,OCR选型是绕不开的。
| 维度 | PaddleOCR | Tesseract | 商业方案(百度云/腾讯云) |
|---|---|---|---|
| 中文识别率 | ⭐⭐⭐⭐⭐(95%+) | ⭐⭐⭐(70-80%) | ⭐⭐⭐⭐⭐ |
| 英文识别率 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| 部署方式 | 本地(pip install) | 本地(系统安装) | API调用 |
| 版面分析 | ✅ 自带 | ❌ 需额外处理 | ✅ |
| 表格识别 | ✅ 自带 | ❌ | ✅ |
| 成本 | 免费 | 免费 | 按量付费 |
| 上手难度 | 低 | 中等 | 最低 |
PaddleOCR:中文OCR的绝对王者
一个不争的事实:PaddleOCR的中文识别率远高于Tesseract。这不是玄学,是模型架构决定的——PaddleOCR是百度基于大量中文数据训练的,Tesseract虽然历史悠久,但它的核心引擎对中文字符的形态理解远不如PaddleOCR。
# PaddleOCR 三行代码搞定 from paddleocr import PaddleOCR ocr = PaddleOCR(use_angle_cls=True, lang='ch') result = ocr.ocr('contract_scan.jpg', cls=True) for line in result[0]: text = line[1][0] # 识别的文字 confidence = line[1][1] # 置信度 print(f"{text} ({confidence:.2%})")⚠️避坑警告:如果你在Windows上用pip直接装PaddleOCR,大概率会遇到protobuf版本冲突。正确姿势:先装protobuf==3.20.2,再装paddlepaddle,最后装paddleocr。别问我怎么知道的,问就是踩过。
Tesseract:英文场景的老牌劲旅
Tesseract 适合什么场景?
- 纯英文文档(准确率高于PaddleOCR)
- 你不需要版面分析(自己做预处理)
- 对中文识别率要求不高
一句话总结OCR选型:
- 中文为主 → PaddleOCR(没有悬念)
- 纯英文 → Tesseract(更简单)
- 不想自己部署 → 商业API(花钱买省心)
七、PDF解析工具:文档智能的"第一道坎"
PDF解析是所有文档型AI项目的第一只拦路虎。看似简单,实际上坑多到怀疑人生。
| 工具 | 文本提取 | 表格提取 | 扫描件支持 | 多栏布局 | 安装难度 |
|---|---|---|---|---|---|
| PyMuPDF (fitz) | ⭐⭐⭐⭐⭐ | ❌ | ❌ | ⭐⭐⭐ | ⭐(pip install) |
| pdfplumber | ⭐⭐⭐⭐ | ⭐⭐⭐ | ❌ | ⭐⭐⭐⭐ | ⭐ |
| Camelot | ❌ | ⭐⭐⭐⭐⭐ | ❌ | ⭐⭐ | ⭐⭐(需要Ghostscript) |
| Tabula | ❌ | ⭐⭐⭐⭐ | ❌ | ⭐⭐ | ⭐(需要Java) |
PyMuPDF:最快的文本提取器
import fitz # PyMuPDF doc = fitz.open("report.pdf") for page in doc: text = page.get_text() print(f"第{page.number+1}页: {len(text)}字符")PyMuPDF是纯文本提取的首选——速度快、安装简单、支持加密PDF。但它不擅长表格和多栏布局,遇到复杂排版容易把不同列的文本混到一起。
Camelot:表格提取的王者
如果你的PDF里有表格,Camelot是正确答案:
import camelot # 提取所有表格 tables = camelot.read_pdf("financial_report.pdf", pages="1-5") # 导出为DataFrame for i, table in enumerate(tables): df = table.df print(f"表格{i+1}: {df.shape[0]}行 × {df.shape[1]}列")Camelot有两种模式:
- Lattice:线框表格(有边框的),准确率极高
- Stream:无线表格(靠空格对齐的),需要调参数
💡效率技巧:组合使用PyMuPDF和Camelot——PyMuPDF提取纯文本段落,Camelot专门提取表格区域。两个结果拼在一起,就是完整的文档内容。不要试图用一个工具解决所有问题,PDF解析没有银弹。
真实场景的工具组合拳
在实际项目中,PDF解析通常是组合拳:
普通文本PDF → PyMuPDF 就够了 带表格的PDF → PyMuPDF(文字) + Camelot(表格) 扫描件PDF → pdf2image(转图片) + PaddleOCR(识别) 混合型(文+表+图) → 按区域分别处理,最后合并这条组合拳救了我至少两个项目。第一次做财报分析时,单一工具提取结果惨不忍睹——表格被当作文本拆得七零八落。拆成两个工具分别处理后,准确率从60%飙到95%。
八、选型决策流程:一张流程图帮你做决定
看到这里你可能已经有点选择了。再给你一张决策流程图,把模糊的感觉变成明确的路径:
flowchart TD START["开始选型"] --> Q1{"你的项目类型?"} Q1 -->|"RAG知识库/文档问答"| Q2{"数据能上云吗?"} Q1 -->|"多Agent协作"| Q3{"团队有Agent经验吗?"} Q1 -->|"简单AI应用(单次调用)"| NODE["大模型直接用API<br/>不需要框架和向量库"] Q2 -->|"能"| RAG1["框架: LlamaIndex<br/>大模型: GPT-4o/DeepSeek<br/>向量库: ChromaDB→Milvus<br/>嵌入: BGE-M3"] Q2 -->|"不能(私密数据)"| RAG2["框架: LlamaIndex<br/>大模型: Llama3/Qwen本地<br/>向量库: Milvus(自建)<br/>嵌入: BGE-M3本地"] Q3 -->|"有经验"| AGENT1["框架: LangGraph<br/>大模型: GPT-4o/Claude<br/>向量库: 按需"] Q3 -->|"没有经验"| AGENT2["先做单Agent<br/>框架: LangChain<br/>成熟后再升级LangGraph"] Q1 -->|"文档分析(含OCR)"| Q4{"中文为主?"} Q4 -->|"是"| DOC1["OCR: PaddleOCR<br/>PDF: PyMuPDF+Camelot<br/>大模型: DeepSeek/通义千问"] Q4 -->|"否(英文)"| DOC2["OCR: Tesseract<br/>PDF: PyMuPDF+Tabula<br/>大模型: GPT-4o/Claude"] style START fill:#4CAF50,color:white style RAG1 fill:#2196F3,color:white style RAG2 fill:#2196F3,color:white style AGENT1 fill:#FF9800,color:white style AGENT2 fill:#FF9800,color:white style DOC1 fill:#9C27B0,color:white style DOC2 fill:#9C27B0,color:white这张图=选型决策的核心逻辑。根据你的项目类型走一遍,输出的就是推荐的完整技术栈。
九、技术栈组合拳:4套开箱即用的推荐方案
如果你懒得走流程图,这里直接给你4套"拿来就用"的技术栈:
方案A:快速原型(3天出Demo)
| 层级 | 选型 | 理由 |
|---|---|---|
| 大模型 | DeepSeek API | 便宜、中文好、即开即用 |
| 向量库 | ChromaDB | 10分钟搭好 |
| 框架 | LlamaIndex | RAG一条龙 |
| 嵌入模型 | BGE-M3 | 中文顶尖、免费 |
| OCR | 先不用 | 原型阶段处理文本格式就行 |
| PDF解析 | PyMuPDF | 够用 |
适合:快速验证想法、个人项目、小团队创业
方案B:生产级RAG(上线水准)
| 层级 | 选型 | 理由 |
|---|---|---|
| 大模型 | GPT-4o(主干) + DeepSeek(降级) | 效果好+成本可控 |
| 向量库 | Milvus(分布式) | 支撑百万级数据 |
| 框架 | LangChain | 多模型切换、链式调用 |
| 嵌入模型 | BGE-M3 | 效果=ada-002,费用≈0 |
| OCR | PaddleOCR | 扫描件也能处理 |
| PDF解析 | PyMuPDF + Camelot | 文+表全覆盖 |
适合:公司内部工具、对外产品、需要稳定性和扩展性
方案C:100%私有化部署(数据不出门)
| 层级 | 选型 | 理由 |
|---|---|---|
| 大模型 | Qwen2-72B / Llama3-70B | 用vLLM部署 |
| 向量库 | Milvus(自建) | 可控、可审计 |
| 框架 | LlamaIndex(精简使用) | 减少外部依赖 |
| 嵌入模型 | BGE-M3(本地) | 免费+数据安全 |
| OCR | PaddleOCR(本地) | 离线可用 |
| PDF解析 | PyMuPDF + Camelot | 纯本地工具 |
适合:金融、政务、军工、医疗等强隐私场景
方案D:多Agent智能体
| 层级 | 选型 | 理由 |
|---|---|---|
| 编排 | LangGraph | 状态图编排Agent |
| 大模型 | GPT-4o(推理) + DeepSeek(执行) | 分工明确 |
| 向量库 | ChromaDB(原型)→Milvus(生产) | 渐进式 |
| 框架 | LangChain(工具集成) + LangGraph(编排) | 各司其职 |
| 嵌入模型 | BGE-M3 | 通用中文方案 |
| 其他 | Redis(消息队列) + PostgreSQL(状态) | Agent间通信 |
适合:复杂业务编排、多角色协作、自动化工作流
技术栈选型速查矩阵
最后送你一张"看完就知道该选什么"的速查表:
graph LR subgraph 决策因素 D1["💰 预算"] D2["🔒 数据安全"] D3["📊 数据量"] D4["🕐 时间"] end subgraph 选型结果 R1["大模型<br/>API / 开源"] R2["向量库<br/>ChromaDB / Milvus"] R3["框架<br/>LlamaIndex / LangChain"] R4["OCR<br/>PaddleOCR / Tesseract"] end D1 --> R1 D1 --> R2 D2 --> R1 D2 --> R2 D3 --> R2 D3 --> R3 D4 --> R3 D4 --> R4记住:没有最好的技术栈,只有最适合你当前阶段的技术栈。今天的选型不是终身契约,而是你在当前约束下的最优解。ChromaDB升Milvus、LlamaIndex切LangChain,都是正常的技术演进。
写在最后
这篇文章的核心,不是让你记住每个工具的对比数据,而是给你一套可复用的选型方法论:
- 先跑通,再优化——用ChromaDB+DeepSeek把MVP跑起来
- 根据瓶颈迭代——哪里慢了改哪里,而不是一开始就想全
- 数据驱动决策——不是你"觉得"Milvus好就上,而是ChromaDB真的扛不住再迁
技术选型就像选对象——没有完美的,只有合适的。别花两个月纠结"最优方案",花两周跑一个能用的,剩下的迭代就能解决。
【源码获取】
关注本系列,后续每篇文章都会附带完整可运行的项目代码。回复关键词「AI选型速查」获取本文所有对比表格的Excel版本,可以直接在团队内做选型评审。
【思考题】
你的下一个AI项目是做一个"合同条款智能审查"系统。请根据你的实际条件(公司规模、预算、数据量、是否有GPU等),在评论区写下你的技术栈选择,并说明理由。我会挑选3个最有代表性的方案做一次技术栈评审,告诉你哪里选得好、哪里有更好的选择。
【系列文章预告】
下一篇:《AI项目环境搭建——从Python到GPU的完整踩坑指南》
为什么别人的环境半天搭好,你搭了三天还在报错?CUDA版本、conda环境、pip冲突、Docker GPU透传——我把所有坑都踩了一遍,给你一份"复制粘贴就能用"的完整环境配置方案。下篇见。
标签:#技术选型 #LLM #向量数据库 #LangChain #AI框架 #开源模型 #项目管理