语义路由
语义路由可以让调用方始终使用同一个模型别名,而 AISIX 会根据请求含义把每次请求转发到不同的上游模型。调用方始终发送相同的 model。AISIX 会读取最新一条用户消息,为 其生成向量,并与每个路由上配置的示例语句做相似度比较。随后,AISIX 会把请求转发到最佳匹配路由的目标模型;如果没有匹配项,则转发到默认模型。
在 AISIX 中,语义路由器是一种模型别名,类似路由组和集成模型,AISIX 会通过路由决策解析它。与直接指向某个上游模型不同,语义路由器的 semantic 配置会告诉 AISIX 如何为请求打分,以及每条路由应使用哪个直连模型(direct model)。
当你希望一个入口按主题分流时,可以使用语义路由。例如,把法律问题发送给推理能力更强的模型,把翻译请求发送给成本更低的多语言模型,其它请求走通用默认模型。应用不需要在每次请求时自行选择模型。
请求流程
对于每个请求,AISIX 会使用配置的 embedding model,把最新用户消息与路由示例进行比较,然后分发到一个直连模型。
对于每个发往语义路由器的聊天请求,AISIX 会:
- 通过配置的 embedding model 对最新用户消息生成向量。
- 使用余弦相似度,将其与每条路由的示例向量进行打分。
- 取每条路由中最高的示例得分,并选出超过阈值的最高得分路由。
- 分发到该路由的目标模型;如果没有任何路由超过阈值,则分发到默认模型。
示例语句只会生成一次向量,并缓存在数据面中。因此稳定状态下,每个请求的额外成本是一轮针对 prompt 的 embedding 调用,以及本地相似度计算。