<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Embedding on Wilson Wu</title><link>https://wilsonwu.me/zh/tags/embedding/</link><description>Recent content in Embedding on Wilson Wu</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Mon, 03 Aug 2026 00:00:00 -0400</lastBuildDate><atom:link href="https://wilsonwu.me/zh/tags/embedding/index.xml" rel="self" type="application/rss+xml"/><item><title>在 vLLM Semantic Router 中使用 Microsoft Foundry 远程 Embedding 推理</title><link>https://wilsonwu.me/zh/blog/2026/azure-foundry-embeddings-with-vllm-sr/</link><pubDate>Mon, 03 Aug 2026 00:00:00 -0400</pubDate><guid>https://wilsonwu.me/zh/blog/2026/azure-foundry-embeddings-with-vllm-sr/</guid><description>&lt;h2 id="1-引言"&gt;1. 引言&lt;/h2&gt;
&lt;p&gt;在 vLLM Semantic Router 的设计中，Embedding 推理是驱动语义路由的核心信号之一。&lt;/p&gt;
&lt;p&gt;官方教程已经演示了如何使用&lt;strong&gt;远程 Embedding 推理提供商（Remote Embedding Providers）&lt;/strong&gt;替代本地 Embedding 推理服务：&lt;/p&gt;</description><content:encoded><![CDATA[<h2 id="1-引言">1. 引言</h2>
<p>在 vLLM Semantic Router 的设计中，Embedding 推理是驱动语义路由的核心信号之一。</p>
<p>官方教程已经演示了如何使用<strong>远程 Embedding 推理提供商（Remote Embedding Providers）</strong>替代本地 Embedding 推理服务：</p>
<p>👉 <a href="https://vllm-sr.ai/docs/tutorials/global/remote-embeddings/">https://vllm-sr.ai/docs/tutorials/global/remote-embeddings/</a></p>
<p>然而，在实际生产环境中，一个更为关键的问题随之而来：</p>

<blockquote>
  <p>如何使用企业级、可扩展的 Embedding 推理服务来支持语义路由？</p>

</blockquote>
<p>本文基于官方教程中的场景，并结合 <strong>Microsoft Foundry Embedding 模型</strong>，演示如何构建一个具备以下特性的智能路由系统：</p>
<ul>
<li>无需 GPU</li>
<li>无需在本地部署 Embedding 模型</li>
<li>生产就绪</li>
</ul>
<h2 id="2-回顾远程-embedding-推理提供商">2. 回顾：远程 Embedding 推理提供商</h2>
<p>在 vLLM Semantic Router 中，路由器运行在 CPU 上，不依赖 GPU 推理能力。</p>
<p>通过远程 Embedding 推理提供商：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>路由器 → 远程 Embedding 推理 API → 向量
</span></span></code></pre></div><p>我们可以：</p>
<ul>
<li>将嵌入计算完全卸载到云服务</li>
<li>统一多模型的语义能力</li>
<li>解耦路由与推理</li>
</ul>
<h2 id="3-教程场景沿用官方测试场景">3. 教程场景（沿用官方测试场景）</h2>
<p>在官方教程中，核心流程如下：</p>
<p><img alt="远程嵌入流程" loading="lazy" src="/zh/blog/2026/azure-foundry-embeddings-with-vllm-sr/1-remote-embeddings-flow.png"></p>
<h3 id="第-1-步定义语义路由">第 1 步：定义语义路由</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">routing</span>:
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">decisions</span>:
</span></span><span style="display:flex;"><span>    - <span style="color:#f92672">name</span>: <span style="color:#ae81ff">math</span>
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">when</span>:
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">semantic_similarity</span>:
</span></span><span style="display:flex;"><span>          <span style="color:#f92672">text</span>: <span style="color:#e6db74">&#34;math question&#34;</span>
</span></span><span style="display:flex;"><span>          <span style="color:#f92672">threshold</span>: <span style="color:#ae81ff">0.8</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    - <span style="color:#f92672">name</span>: <span style="color:#ae81ff">general</span>
</span></span></code></pre></div><h3 id="第-2-步发送请求">第 2 步：发送请求</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>curl http://localhost:8888/v1/chat/completions <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span>  -d <span style="color:#e6db74">&#39;{
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">    &#34;model&#34;: &#34;MoM&#34;,
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">    &#34;messages&#34;: [{&#34;role&#34;: &#34;user&#34;, &#34;content&#34;: &#34;What is 1+1?&#34;}]
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">  }&#39;</span>
</span></span></code></pre></div><p>路由器将执行以下操作：</p>
<ol>
<li>生成嵌入向量</li>
<li>执行语义匹配</li>
<li>选择目标模型</li>
</ol>
<h2 id="4-第-0-步在-microsoft-foundry-中创建-embedding-模型">4. 第 0 步：在 Microsoft Foundry 中创建 Embedding 模型</h2>
<p>在与 vLLM Semantic Router 集成之前，我们首先需要在 Microsoft Foundry 中部署一个 Embedding 模型。</p>
<h3 id="41-创建-foundry-项目">4.1 创建 Foundry 项目</h3>
<ol>
<li>前往 <strong>Microsoft Foundry 门户</strong></li>
<li>创建新项目（或选择现有项目）</li>
<li>确保该项目已关联 Azure 订阅</li>
</ol>
<h3 id="42-部署嵌入模型">4.2 部署嵌入模型</h3>
<p>在模型目录中：</p>
<ol>
<li>搜索 <strong>Embedding 模型</strong></li>
<li>选择受支持的模型（例如 <code>text-embedding-3-small</code>）</li>
<li>单击 <strong>Deploy（部署）</strong></li>
</ol>
<p>部署完成后，你将获得：</p>
<ul>
<li>Endpoint URL</li>
<li>API Key</li>
<li>Model Name</li>
</ul>
<p>示例：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>Endpoint: https://&lt;your-foundry-resource&gt;.inference.ai.azure.com
</span></span><span style="display:flex;"><span>Model: text-embedding-3-small
</span></span><span style="display:flex;"><span>API Key: ******
</span></span></code></pre></div><h3 id="43-验证-embedding-推理-api">4.3 验证 Embedding 推理 API</h3>
<p>你可以直接测试该终结点：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>curl https://&lt;your-foundry-endpoint&gt;/v1/embeddings <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span>  -H <span style="color:#e6db74">&#34;api-key: &lt;your-api-key&gt;&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span>  -H <span style="color:#e6db74">&#34;Content-Type: application/json&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span>  -d <span style="color:#e6db74">&#39;{
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">    &#34;input&#34;: &#34;Hello world&#34;
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">  }&#39;</span>
</span></span></code></pre></div><p>如果调用成功，你将收到包含向量的响应。</p>
<h2 id="5-升级使用-microsoft-foundry-替代本地-embedding-模型">5. 升级：使用 Microsoft Foundry 替代本地 Embedding 模型</h2>
<p>现在，我们将教程中的 Embedding 推理提供商替换为：</p>

<blockquote>
  <p>✅ Microsoft Foundry Embedding 模型</p>

</blockquote>
<p><img alt="Microsoft Foundry Embedding 模型" loading="lazy" src="/zh/blog/2026/azure-foundry-embeddings-with-vllm-sr/2-microsoft-foundry-embedding-model.png"></p>
<h2 id="6-为什么选择-microsoft-foundry-embedding-模型">6. 为什么选择 Microsoft Foundry Embedding 模型</h2>
<p>Microsoft Foundry 提供：</p>
<ul>
<li>高质量 Embedding 模型（更强的语义理解能力）</li>
<li>托管 API（无需自行部署）</li>
<li>全球可用性与企业级 SLA</li>
<li>与 Azure AI 生态系统无缝集成</li>
</ul>
<p>更重要的是：</p>

<blockquote>
  <p>它可以直接充当 Semantic Router 的“语义大脑”</p>

</blockquote>
<h2 id="7-集成将-microsoft-foundry-用作远程-embedding-推理提供商">7. 集成：将 Microsoft Foundry 用作远程 Embedding 推理提供商</h2>
<h3 id="71-配置-embedding-推理提供商">7.1 配置 Embedding 推理提供商</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">providers</span>:
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">embedding</span>:
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">type</span>: <span style="color:#ae81ff">remote</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">provider</span>: <span style="color:#ae81ff">openai-compatible</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">base_url</span>: <span style="color:#ae81ff">https://&lt;your-foundry-endpoint&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">api_key</span>: <span style="color:#ae81ff">&lt;your-api-key&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">model</span>: <span style="color:#ae81ff">text-embedding-3-small</span>
</span></span></code></pre></div><p>说明：</p>
<ul>
<li>Foundry 提供兼容 OpenAI 的 API</li>
<li>可以直接复用 Semantic Router 的远程 Embedding 推理提供商</li>
<li>无需额外适配</li>
</ul>
<h3 id="72-路由器工作流">7.2 路由器工作流</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>用户请求
</span></span><span style="display:flex;"><span>   ↓
</span></span><span style="display:flex;"><span>Semantic Router
</span></span><span style="display:flex;"><span>   ↓
</span></span><span style="display:flex;"><span>Microsoft Foundry Embedding 推理 API
</span></span><span style="display:flex;"><span>   ↓
</span></span><span style="display:flex;"><span>向量相似度计算
</span></span><span style="display:flex;"><span>   ↓
</span></span><span style="display:flex;"><span>路由决策
</span></span><span style="display:flex;"><span>   ↓
</span></span><span style="display:flex;"><span>目标模型（vLLM / API）
</span></span></code></pre></div><h2 id="8-相比官方教程的主要改进">8. 相比官方教程的主要改进</h2>
<table>
	<thead>
			<tr>
					<th>能力</th>
					<th>原始方案</th>
					<th>Microsoft Foundry 方案</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>嵌入来源</td>
					<td>本地 / 模拟</td>
					<td>云端高质量模型</td>
			</tr>
			<tr>
					<td>部署成本</td>
					<td>需要模型或容器</td>
					<td>零运维</td>
			</tr>
			<tr>
					<td>可扩展性</td>
					<td>单一环境</td>
					<td>多区域</td>
			</tr>
			<tr>
					<td>语义质量</td>
					<td>中等</td>
					<td>企业级</td>
			</tr>
	</tbody>
</table>
<h2 id="9-实际价值">9. 实际价值</h2>
<h3 id="-1-真正的无-gpu-架构">🚀 1. 真正的“无 GPU 架构”</h3>
<p>路由器本身运行在 CPU 上。</p>
<p>Embedding 模型与推理能力完全外部化：</p>
<ul>
<li>Foundry → Embedding 模型</li>
<li>vLLM / API → 推理</li>
</ul>
<h3 id="-2-更准确的语义路由">🧠 2. 更准确的语义路由</h3>
<p>在教程场景中：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>&#34;What is 1+1?&#34; → math 路由
</span></span><span style="display:flex;"><span>&#34;Tell me a joke&#34; → general 路由
</span></span></code></pre></div><p>使用 Foundry 嵌入后，可以获得：</p>
<ul>
<li>更稳定的语义理解</li>
<li>更好的多语言支持</li>
<li>对边界场景更准确的判断</li>
</ul>
<h3 id="-3-统一的多模型入口">🌐 3. 统一的多模型入口</h3>
<p>结合 Semantic Router：</p>
<ul>
<li>Microsoft Foundry（Embedding 模型）</li>
<li>vLLM（自托管推理）</li>
<li>OpenAI / 其他 API</li>
</ul>
<p>从而实现真正的：</p>

<blockquote>
  <p><strong>多提供商智能路由</strong></p>

</blockquote>
<h2 id="10-架构洞察">10. 架构洞察</h2>
<p>此次升级的本质是：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>升级前：
</span></span><span style="display:flex;"><span>路由器 = 基础设施 + 智能
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>升级后：
</span></span><span style="display:flex;"><span>路由器 = 智能
</span></span><span style="display:flex;"><span>Foundry = AI 能力
</span></span></code></pre></div><p>由此形成清晰的分层架构：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>[ AI 能力层 ] → Microsoft Foundry
</span></span><span style="display:flex;"><span>[ 路由层    ] → Semantic Router
</span></span><span style="display:flex;"><span>[ 推理层    ] → vLLM / APIs
</span></span></code></pre></div><h2 id="11-总结">11. 总结</h2>
<p>通过将 Microsoft Foundry 与官方远程 Embedding 模型教程相结合，我们实现了一套生产就绪的架构：</p>
<ul>
<li>无需本地 Embedding 模型</li>
<li>无需 GPU</li>
<li>高质量的语义能力</li>
<li>企业级可靠性</li>
</ul>
<p>这不仅是一次功能增强，更是 Semantic Router 的一次关键演进：</p>

<blockquote>
  <p>从“本地工具”演进为“云原生 AI 路由层”</p>

</blockquote>
]]></content:encoded></item><item><title>让模型自己选模型：Embedding 驱动的 LLM 智能路由机制</title><link>https://wilsonwu.me/zh/blog/2026/llm-smart-router/</link><pubDate>Tue, 26 May 2026 00:00:00 -0400</pubDate><guid>https://wilsonwu.me/zh/blog/2026/llm-smart-router/</guid><description>&lt;p&gt;在多模型并存的 AI 架构中（如 GPT-4 / GPT-4o / 轻量模型 / 垂直模型等），一个核心问题是：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;如何在不显式指定模型 ID 的情况下，让系统自动选择最合适的模型？&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;</description><content:encoded><![CDATA[<p>在多模型并存的 AI 架构中（如 GPT-4 / GPT-4o / 轻量模型 / 垂直模型等），一个核心问题是：</p>

<blockquote>
  <p><strong>如何在不显式指定模型 ID 的情况下，让系统自动选择最合适的模型？</strong></p>

</blockquote>
<p>本文介绍一种工程可落地的方案：</p>

<blockquote>
  <p><strong>通过 Embedding 模型计算用户意图 → 在网关层进行语义匹配 → 动态路由到最合适的上游模型服务</strong></p>

</blockquote>
<p>我们将基于：</p>
<ul>
<li>Embedding 模型：Azure OpenAI <code>text-embedding-3-small</code></li>
<li>网关：Envoy</li>
<li>核心机制：向量相似度打分 + 策略路由</li>
</ul>
<h2 id="问题背景与动机">问题背景与动机</h2>
<p>在真实生产环境中，大模型调用通常面临几个挑战：</p>
<h3 id="1-成本与性能权衡">1. 成本与性能权衡</h3>
<table>
	<thead>
			<tr>
					<th>模型类型</th>
					<th>优点</th>
					<th>缺点</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>大模型（如 GPT-4）</td>
					<td>能力强</td>
					<td>成本高 / 延迟高</td>
			</tr>
			<tr>
					<td>小模型（如 GPT-4o-mini）</td>
					<td>快 / 便宜</td>
					<td>能力有限</td>
			</tr>
			<tr>
					<td>专用模型</td>
					<td>精准</td>
					<td>泛化弱</td>
			</tr>
	</tbody>
</table>
<p>不同请求应该走不同模型，而不是“一刀切”。</p>
<h3 id="2-传统做法的局限">2. 传统做法的局限</h3>
<p>常见策略：</p>
<ul>
<li>手动指定 model_id ❌（不智能）</li>
<li>基于规则（if/else）❌（不可扩展）</li>
<li>基于关键词匹配 ❌（语义不鲁棒）</li>
</ul>
<h3 id="3-理想目标">3. 理想目标</h3>
<p>我们希望：</p>

<blockquote>
  <p>用户只输入 prompt，系统自动理解“意图”，并选择最优模型</p>

</blockquote>
<p>这正是 Embedding 可以发挥作用的地方。</p>
<h2 id="核心原理embedding-驱动的语义路由">核心原理：Embedding 驱动的语义路由</h2>
<h3 id="1-embedding-本质">1. Embedding 本质</h3>
<p>Embedding 模型（如 <code>text-embedding-3-small</code>）可以将文本映射为高维向量：</p>
<pre tabindex="0"><code>&#34;写一段 Python 排序代码&#34;
→ [0.012, -0.98, ..., 0.33]  (1536维向量)
</code></pre><p>语义相似的文本，其向量距离更近。</p>
<h3 id="2-路由思路">2. 路由思路</h3>
<p>核心逻辑可以抽象为：</p>
<pre tabindex="0"><code>用户请求 → Embedding → 与“意图模板库”计算相似度 → 选择最佳匹配 → 路由模型
</code></pre><h3 id="3-意图模板intent-prototypes">3. 意图模板（Intent Prototypes）</h3>
<p>我们预先定义一组“意图向量”：</p>
<table>
	<thead>
			<tr>
					<th>意图类型</th>
					<th>示例文本</th>
					<th>目标模型</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>代码生成</td>
					<td>&ldquo;write code&rdquo;, &ldquo;generate function&rdquo;</td>
					<td>GPT-4</td>
			</tr>
			<tr>
					<td>简单问答</td>
					<td>&ldquo;what is&rdquo;, &ldquo;define&rdquo;</td>
					<td>GPT-4o-mini</td>
			</tr>
			<tr>
					<td>翻译</td>
					<td>&ldquo;translate this&rdquo;</td>
					<td>轻量模型</td>
			</tr>
			<tr>
					<td>长文生成</td>
					<td>&ldquo;write blog&rdquo;</td>
					<td>GPT-4</td>
			</tr>
	</tbody>
</table>
<p>这些文本会提前计算 embedding 并缓存。</p>
<h3 id="4-相似度计算">4. 相似度计算</h3>
<p>常用方法：</p>
<ul>
<li>Cosine Similarity（推荐）</li>
</ul>
<pre tabindex="0"><code>similarity = cosine(query_embedding, intent_embedding)
</code></pre><p>选择最高分：</p>
<pre tabindex="0"><code>argmax(similarity_i)
</code></pre><h2 id="系统架构设计">系统架构设计</h2>
<p>整体架构如下：</p>
<pre tabindex="0"><code>                ┌──────────────┐
                │   Client     │
                └──────┬───────┘
                       │
               ┌───────▼────────┐
               │    Envoy 网关   │
               │   (智能路由层)   │
               └───────┬────────┘
                       │
        ┌──────────────┼──────────────┐
        │              │              │
 ┌──────▼─────┐ ┌──────▼─────┐ ┌──────▼─────┐
 │ GPT-4      │ │ GPT-4o-mini│ │ 专用模型    │
 └────────────┘ └────────────┘ └────────────┘
</code></pre><h2 id="实现逻辑拆解">实现逻辑拆解</h2>
<h3 id="1-请求流程">1. 请求流程</h3>
<h4 id="step-1获取用户请求">Step 1：获取用户请求</h4>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-json" data-lang="json"><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&#34;input&#34;</span>: <span style="color:#e6db74">&#34;帮我写一段 Go 的 HTTP server 示例&#34;</span>
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><h4 id="step-2调用-embedding-api">Step 2：调用 Embedding API</h4>
<p>使用 Azure OpenAI：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-http" data-lang="http"><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">POST https://{endpoint}/openai/deployments/text-embedding-3-small/embeddings?api-version=2024-02-15-preview
</span></span></span></code></pre></div><p>请求体：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-json" data-lang="json"><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&#34;input&#34;</span>: <span style="color:#e6db74">&#34;帮我写一段 Go 的 HTTP server 示例&#34;</span>
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><h4 id="step-3计算相似度">Step 3：计算相似度</h4>
<p>伪代码：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">route</span>(query_embedding):
</span></span><span style="display:flex;"><span>    best_score <span style="color:#f92672">=</span> <span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>    best_model <span style="color:#f92672">=</span> <span style="color:#66d9ef">None</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">for</span> intent <span style="color:#f92672">in</span> intents:
</span></span><span style="display:flex;"><span>        score <span style="color:#f92672">=</span> cosine_similarity(query_embedding, intent<span style="color:#f92672">.</span>embedding)
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span> score <span style="color:#f92672">&gt;</span> best_score:
</span></span><span style="display:flex;"><span>            best_score <span style="color:#f92672">=</span> score
</span></span><span style="display:flex;"><span>            best_model <span style="color:#f92672">=</span> intent<span style="color:#f92672">.</span>model
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">return</span> best_model
</span></span></code></pre></div><h4 id="step-4envoy-动态路由">Step 4：Envoy 动态路由</h4>
<p>将结果写入 Header：</p>
<pre tabindex="0"><code>x-llm-route: gpt-4
</code></pre><p>Envoy 根据 Header 路由：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">routes</span>:
</span></span><span style="display:flex;"><span>- <span style="color:#f92672">match</span>:
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">prefix</span>: <span style="color:#e6db74">&#34;/v1/chat&#34;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">headers</span>:
</span></span><span style="display:flex;"><span>      - <span style="color:#f92672">name</span>: <span style="color:#ae81ff">x-llm-route</span>
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">exact_match</span>: <span style="color:#ae81ff">gpt-4</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">route</span>:
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">cluster</span>: <span style="color:#ae81ff">gpt4_service</span>
</span></span></code></pre></div><h2 id="envoy-网关实现方式">Envoy 网关实现方式</h2>
<p>Envoy 本身不直接支持向量计算，因此需要扩展：</p>
<h3 id="方案-1external-processing推荐">方案 1：External Processing（推荐）</h3>
<p>Envoy 调用外部服务（ext_proc）：</p>
<pre tabindex="0"><code>Envoy → ext_proc 服务 → 返回路由决策 → Envoy 转发
</code></pre><p>ext_proc 负责：</p>
<ul>
<li>调用 embedding</li>
<li>计算相似度</li>
<li>返回 header</li>
</ul>
<h3 id="方案-2wasm-插件">方案 2：WASM 插件</h3>
<p>在 Envoy 内嵌逻辑：</p>
<ul>
<li>优点：低延迟</li>
<li>缺点：开发复杂（Rust/CPP）</li>
</ul>
<h3 id="方案-3sidecar-router简单">方案 3：Sidecar Router（简单）</h3>
<pre tabindex="0"><code>Client → Router Service → Envoy → Model
</code></pre><p>Router 服务负责所有智能逻辑。</p>
<h2 id="优化策略">优化策略</h2>
<h3 id="1-向量缓存">1. 向量缓存</h3>
<p>避免重复调用 embedding：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>cache[input_hash] <span style="color:#f92672">=</span> embedding
</span></span></code></pre></div><h3 id="2-意图分层">2. 意图分层</h3>
<p>避免单层分类过粗：</p>
<pre tabindex="0"><code>一级：代码 / 问答 / 写作
二级：语言 / 长度 / 难度
</code></pre><h3 id="3-阈值控制">3. 阈值控制</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#66d9ef">if</span> best_score <span style="color:#f92672">&lt;</span> threshold:
</span></span><span style="display:flex;"><span>    fallback_model <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;gpt-4&#34;</span>
</span></span></code></pre></div><p>防止误判。</p>
<h3 id="4-多模型融合ensemble">4. 多模型融合（Ensemble）</h3>
<p>可扩展为：</p>
<ul>
<li>Top-K 模型候选</li>
<li>A/B 测试</li>
<li>加权路由</li>
</ul>
<h3 id="5-成本感知路由">5. 成本感知路由</h3>
<p>结合：</p>
<ul>
<li>token 预算</li>
<li>用户等级</li>
<li>SLA</li>
</ul>
<p>做策略增强：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#66d9ef">if</span> user <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;free&#34;</span>:
</span></span><span style="display:flex;"><span>    prefer_small_model()
</span></span></code></pre></div><h2 id="优势分析">优势分析</h2>
<h3 id="相比规则路由">相比规则路由</h3>
<table>
	<thead>
			<tr>
					<th>维度</th>
					<th>Embedding 路由</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>语义理解</td>
					<td>强</td>
			</tr>
			<tr>
					<td>可扩展性</td>
					<td>高</td>
			</tr>
			<tr>
					<td>维护成本</td>
					<td>低</td>
			</tr>
	</tbody>
</table>
<h3 id="相比手动指定模型">相比手动指定模型</h3>
<ul>
<li>用户体验更好（无需关心模型）</li>
<li>自动最优成本</li>
<li>支持动态策略</li>
</ul>
<h2 id="落地建议">落地建议</h2>
<h3 id="1-初始阶段">1. 初始阶段</h3>
<ul>
<li>5~10 个意图模板即可</li>
<li>手动标注 + 调优</li>
</ul>
<h3 id="2-数据驱动优化">2. 数据驱动优化</h3>
<p>记录：</p>
<ul>
<li>用户请求</li>
<li>路由结果</li>
<li>用户反馈</li>
</ul>
<p>持续优化 intent embedding。</p>
<h3 id="3-与-llm-router-结合">3. 与 LLM Router 结合</h3>
<p>未来可以升级为：</p>

<blockquote>
  <p>用小模型 + embedding 混合决策（Hybrid Router）</p>

</blockquote>
<h2 id="总结">总结</h2>
<p>本文方案的本质是：</p>

<blockquote>
  <p><strong>用 Embedding 替代规则，用向量相似度驱动模型选择</strong></p>

</blockquote>
<p>关键收益：</p>
<ul>
<li>降低成本（智能选择轻量模型）</li>
<li>提升效果（复杂任务走强模型）</li>
<li>架构解耦（路由逻辑与模型解耦）</li>
</ul>
<p>在多模型时代，这种“语义驱动的网关”会成为标准架构组件。</p>
]]></content:encoded></item></channel></rss>