一. Xinference
https://github.com/xorbitsai/inference
Xorbits Inference(简称Xinference)是一个高性能、分布式、多模态的模型推理框架,主要用于在本地或云端部署和运行各类 AI 模型,包括:
- 大语言模型(LLM,如 Qwen、Llama3、ChatGLM 等)
- 嵌入(Embedding)与重排序(Reranker)模型(如 BGE、bge-reranker)
- 语音识别/合成模型(如 Whisper、Bark)
- 图像生成/理解模型(如 Stable Diffusion、Qwen-VL)
- 视频理解模型(实验性)
它提供统一的 RESTful API(兼容 OpenAI 接口)、Web UI、命令行工具和 Python SDK,支持 GPU/CPU 异构计算、分布式集群部署、自动批处理、KV Cache 共享等企业级特性。
和 Ollama、vLLM 的关系与区别
| 维度 | Xinference | Ollama | vLLM |
|---|---|---|---|
| 定位 | 通用、企业级、多模态推理平台 | 轻量级本地 LLM 运行工具 | 高性能 LLM 推理引擎(专注推理加速) |
| 模型支持 | ✅ LLM + Embedding + Reranker + 图像 + 音频 + 视频 | ❌ 仅 LLM(少量 embedding) | ❌ 仅 LLM(部分支持 function calling) |
| 部署方式 | 单机 / 分布式(K8s/Ray)/ Docker | 单机(命令行一键启动) | 通常作为后端引擎嵌入到服务中(如 FastAPI) |
| API 兼容性 | 完全兼容 OpenAI API(含 function calling) | 部分兼容 OpenAI API | 提供 OpenAI 兼容接口(需额外封装) |
| 硬件支持 | NVIDIA/AMD/Apple Silicon/国产芯片(昇腾、寒武纪等) | Apple Silicon 优化最佳,也支持 CUDA/CPU | 主要针对 NVIDIA GPU(CUDA),依赖 PagedAttention |
| 扩展性 | 支持自定义模型注册、多引擎(vLLM/SGLang/Transformers/llama.cpp/MLX) | 固定模型格式(Modelfile + GGUF) | 仅支持自身推理引擎 |
| 典型用户 | 企业开发者、RAG 系统构建者、多模态应用团队 | 个人开发者、快速实验者 | 推理性能敏感的 LLM 服务开发者 |
| 是否包含 vLLM? | ✅ 是!Xinference可选集成 vLLM 作为后端引擎之一 | ❌ 不包含 | vLLM 本身就是一个独立引擎 |
简单类比
- vLLM:像“高性能发动机”——只负责把 LLM 跑得更快(低延迟、高吞吐)。
- Ollama:像“电动滑板车”——轻便、开箱即用,适合一个人短途出行(本地玩 LLM)。
- Xinference:像“智能物流平台”——能调度卡车(LLM)、无人机(图像)、冷链车(语音),还能自动装货卸货(模型管理)、多仓库协同(分布式),适合企业级复杂任务。
💡 实际上,Xinference 可以把 vLLM 当作一个“插件”来使用。你可以在 Xinference 中选择用 vLLM 引擎跑 Llama3,用 Transformers 跑 embedding,用 Whisper 做语音识别——全部通过同一个 API 管理。
什么时候用哪个?
- 想快速试试 Llama3? → 用Ollama(
ollama run llama3) - 想极致优化 LLM 推理速度? → 直接用vLLM
- 想搭建企业级 RAG 系统(需要 LLM + embedding + reranker + 图像理解)? → 用Xinference
- 想在国产 GPU 上跑多模态模型? →Xinference(支持昇腾、寒武纪等)
- 想用一套 API 管理所有 AI 模型? →Xinference
总结
- Xinference ≠ vLLM/Ollama 的竞品,而是更高层的“模型服务平台”。
- 它整合了 vLLM、SGLang、llama.cpp 等引擎,并大幅扩展了模型类型和部署能力。
- 如果你只需要跑 LLM,Ollama 或 vLLM 可能更简单;但如果你需要多模型协同、生产级部署、多模态能力,Xinference 是更全面的选择。
官网:https://github.com/xorbitsai/inference
文档:https://inference.readthedocs.io/
二. LLM + embedding + reranker + 图像理解 都是什么?
LLM(大语言模型)、Embedding(嵌入)、Reranker(重排序器)和图像理解(Image Understanding)——是当前人工智能系统(尤其是多模态智能体和 RAG 系统)中的核心组件。下面我用通俗易懂的方式逐一解释它们“是什么”、“干什么用”,以及它们如何协同工作。
1.LLM(Large Language Model,大语言模型)
是什么?
- 一个超大规模的神经网络,在海量文本上训练而成。
- 能“预测下一个词”,从而实现:回答问题、写文章、编程、推理等。
- 代表模型:Qwen、Llama3、GPT-4、Claude 等。
干什么用?
- 生成自然语言内容(如聊天、写作)
- 理解用户意图
- 基于上下文做逻辑推理
- 调用工具或执行指令
📌 但 LLM 有缺陷:会“胡说八道”(幻觉)、知识截止、无法访问私有数据。
2.Embedding(嵌入)
是什么?
- 把文字、句子、图像等内容转换成一串数字向量(比如 768 维的浮点数数组)。
- 这些向量能捕捉语义信息:语义越相近的内容,向量在空间中距离越近。
举个例子:
“猫” 的向量 ≈ “喵喵” 的向量
“猫” 的向量 ≠ “汽车” 的向量干什么用?
- 语义搜索:把用户问题和文档都转成向量,找最相似的。
- 聚类/分类:相似内容自动归类。
- 作为 LLM 的输入预处理(尤其在 RAG 中)
常见模型:text-embedding-ada-002、BGE、Qwen-embedding、OpenAI Embeddings
3.Reranker(重排序器)
是什么?
- 一个精细化打分模型,用于对“初步召回”的候选结果重新排序。
- 它比 Embedding 更“聪明”:能深度理解问题和文档之间的语义匹配度。
干什么用?
- 解决 Embedding 召回“粗略但快”的问题。
- 比如:
- 用户问:“糖尿病患者能吃西瓜吗?”
- Embedding 可能召回 10 篇含“糖尿病”“水果”的文章(包括讲胰岛素注射的)。
- Reranker 会逐篇判断:哪篇真正讲“饮食禁忌”?然后把最相关的排前面。
常见模型:bge-reranker、Cohere Rerank、ColBERT
💡 技术原理:通常用Cross-Encoder(把问题+文档拼在一起输入 BERT 类模型),比双塔 Embedding(Bi-Encoder)更准但更慢。
4.图像理解(Image Understanding)
是什么?
- 让 AI看懂图片内容,不只是识别物体,还能描述场景、理解关系、回答问题。
- 属于计算机视觉 + 语言模型的交叉领域。
干什么用?
- 图像描述生成(Captioning):输入一张图,输出“一只黑猫坐在窗台上晒太阳”
- 视觉问答(VQA):问“图中有几只狗?”,答“2只”
- 图文检索:用文字搜图,或用图搜相似图
- 多模态 RAG:把图像信息注入知识库,让 LLM 能回答基于图片的问题
代表模型:Qwen-VL、LLaVA、Florence、CLIP、BLIP
🤝 它们怎么一起工作?——以RAG(检索增强生成)系统为例
假设你有一个企业知识库(含 PDF、Word、图片、表格),想让 AI 助手准确回答员工问题:
离线阶段(建库):
- 把所有文档切块(chunk)
- 用Embedding 模型把每个 chunk 转成向量 → 存入向量数据库(如 Milvus、Chroma)
- 如果有图片,用图像理解模型提取描述或特征向量,也存进去
在线阶段(问答):
- 用户问:“去年Q3财报中,华东区营收是多少?”
- 系统用Embedding 模型把问题转成向量
- 在向量库中快速召回 Top 10 相关 chunk(可能包含表格截图)
- 用Reranker对这 10 个结果精细打分重排,选出最相关的 2~3 个
- 把问题 + 精选上下文 一起喂给LLM
- LLM 生成准确、不胡编的答案
如果上下文包含图片,图像理解模型会先将其转化为文字描述,再交给 LLM 处理。
总结对比表
| 组件 | 核心作用 | 技术特点 | 典型模型 |
|---|---|---|---|
| LLM | 生成 & 理解语言 | 自回归、上下文推理 | Qwen、Llama3、GPT-4 |
| Embedding | 语义向量化 | 快速、低精度召回 | BGE、text-embedding-ada |
| Reranker | 精细相关性排序 | 慢但准,Cross-Encoder | bge-reranker、Cohere |
| 图像理解 | 看懂图片内容 | 多模态(视觉+语言) | Qwen-VL、LLaVA、CLIP |
一句话记住它们的关系:
Embedding 负责“广撒网”,Reranker 负责“精挑细选”,LLM 负责“组织语言回答”,图像理解负责“把图变成文字”—— 四者合力,打造准确、可靠、多模态的 AI 系统。
三. Embedding的用途
Embedding 既是 LLM(大语言模型)内部的一环,也可以独立于 LLM 存在。它的角色取决于具体使用场景——在模型推理流程中,它是 LLM 架构的必要组成部分;而在外部应用系统(如 RAG)中,它又常作为独立模块被调用。
下面我们从两个角度详细说明:
一、在 LLM 内部:Embedding 是模型的第一道“语义翻译器”
在所有基于 Transformer 的大语言模型(如 Qwen、Llama、GPT 等)中,Embedding 层是模型架构的起始环节,位于 Tokenizer(分词器)之后、Transformer 主干之前 。
工作流程如下:
- 输入文本→ 如
"Hello world" - Tokenizer将其拆分为 token 并映射为整数 ID →
[9906, 2345] - Embedding 层根据 ID 从预训练的嵌入矩阵(如
tok_embeddings.weight)中查出对应的高维向量 → 每个 token 变成一个 2048 维(以 LLaMA-3 为例)的浮点向量 - 这些向量再送入Transformer Block进行后续处理(注意力、前馈网络等)
✅ 因此,在 LLM内部推理流程中,Embedding 是不可或缺的一环,没有它,模型无法将离散符号转化为可计算的语义表示 。
关键特点:
- Embedding 矩阵是模型参数的一部分,在预训练阶段学习得到
- 向量维度固定(如 768、2048),与模型结构绑定
- 它提供的是token-level 的静态初始表示(虽然后续层会生成上下文相关的动态表示)
二、在 LLM 外部:Embedding 可作为独立服务使用
在实际 AI 应用中(尤其是RAG、语义搜索、聚类等场景),我们常常不依赖 LLM 自带的 Embedding,而是使用专门训练的独立 Embedding 模型ty-reference。
原因包括:
- LLM 的 Embedding 是为语言建模任务(预测下一个词)优化的,不一定适合语义相似度计算
- 专用 Embedding 模型(如 BGE、text-embedding-ada-002)通过对比学习等方法,专门优化了向量间的语义距离,更适合检索任务
- 可以离线批量生成文档向量,存入向量数据库,避免每次调用 LLM
✅ 所以在 RAG 系统中,常见架构是:
独立 Embedding 模型(用于召回) +Reranker(用于精排) +LLM(用于生成)
三、两类 Embedding 的对比
| 特性 | LLM 内部 Embedding | 独立 Embedding 模型 |
|---|---|---|
| 目的 | 支持语言建模(next-token prediction) | 支持语义相似度/检索 |
| 训练目标 | 最大化语言模型似然 | 最大化正样本相似度、最小化负样本相似度 |
| 是否可单独调用 | 通常不可(需加载整个 LLM) | 可独立部署(如 Sentence-BERT、BGE) |
| 向量质量(用于检索) | 一般 | 优秀(专为此优化) |
| 典型代表 | LLaMA 的tok_embeddings.weight | BGE-large-zh、text-embedding-3-small |
结论
是的,Embedding 属于 LLM 内部的一环——它是模型将 token 转化为语义向量的第一层神经网络,没有它 LLM 无法工作。
但同时,Embedding 也可以脱离 LLM 单独存在,作为外部工具服务于检索、聚类等任务。
因此,不能简单地说“Embedding 就是 LLM 的一部分”或“不是”,而要根据上下文判断:
- 在讨论模型架构时:✅ 是内部组件
- 在讨论RAG 或语义搜索系统时:✅ 常是独立模块
这种“内外双重身份”,正是 Embedding 技术强大与灵活的体现。