当前位置: 首页 > news >正文

怎么进入追信魔盒网站开发软件合肥城乡建设局官网

怎么进入追信魔盒网站开发软件,合肥城乡建设局官网,3d建模素材网,wordpress固定链接怎么不能改Router有什么用? 在RAG应用中,Router可以帮助我们基于用户的查询意图来决定使用何种数据类型或数据源,比如是否需要进行语义检索、是否需要进行text2sql查询,是否需要用function call来进行API调用。 Router也可以根据用户的查询…

Router有什么用?

在RAG应用中,Router可以帮助我们基于用户的查询意图来决定使用何种数据类型或数据源,比如是否需要进行语义检索、是否需要进行text2sql查询,是否需要用function call来进行API调用。

在这里插入图片描述

Router也可以根据用户的查询意图来决定使用何种组件类型,比如是否可以用agent来解决用户的问题,是否需要用到向量数据库来进行上下文信息补充,是否直接用LLM来回答用户的问题。

在这里插入图片描述

Route也可以让我们根据问题意图来使用不同的prompt 模板。

在这里插入图片描述

总之,我们使用Router来帮助我们决定query如何被处理和响应。(注:上面的图片都来自于参考资料1)

Router如何实现

基于LLM的Router

鉴于LLM强大的语义理解能力,让LLM作为Router来决定一个query的意图是什么。

  • LLM comletion router,在prompt中给LLM定义一些选项,让LLM选择与问题最相关的选项。

Llamaindex里的prompt如下:

# single select, LLMSingleSelector类默认使用这个prompt
DEFAULT_SINGLE_SELECT_PROMPT_TMPL = ("Some choices are given below. It is provided in a numbered list ""(1 to {num_choices}), ""where each item in the list corresponds to a summary.\n""---------------------\n""{context_list}""\n---------------------\n""Using only the choices above and not prior knowledge, return ""the choice that is most relevant to the question: '{query_str}'\n"
)# multiple select, LLMMultiSelector类默认使用这个prompt
DEFAULT_MULTI_SELECT_PROMPT_TMPL = ("Some choices are given below. It is provided in a numbered ""list (1 to {num_choices}), ""where each item in the list corresponds to a summary.\n""---------------------\n""{context_list}""\n---------------------\n""Using only the choices above and not prior knowledge, return the top choices ""(no more than {max_outputs}, but only select what is needed) that ""are most relevant to the question: '{query_str}'\n"
)
  • LLM Function router: 利用LLM的function call能力,也就是定义一些处理不同意图的function,让LLM将用户query输出function调用参数。LlamaIndex的pandatic Router 就是基于此来实现的。

Semantic Router

Semantic router: 基于语义相似度的Router。其主要思路是将每一类问题意图给出一些示例问法后并用embedding编码,在routing时编码问题后用语义相似度来决定与问题最相关的意图。

semantic-router是一个开源的Semantic router(安装:pip install -qU semantic-router)。其使用示例如下:

import os
from getpass import getpass
from semantic_router.encoders import CohereEncoder, OpenAIEncoder
from semantic_router import Route
from semantic_router.layer import RouteLayeros.environ["OPENAI_API_KEY"] = os.getenv("OPENAI_API_KEY") or getpass("Enter OpenAI API Key: "
)## 定义名为politics的Route,以及其对应的一些描述
politics = Route(name="politics",utterances=["isn't politics the best thing ever","why don't you tell me about your political opinions","don't you just love the president","don't you just hate the president","they're going to destroy this country!","they will save the country!",],
)
## 定义名为politics的Route,以及其对应的一些描述
chitchat = Route(name="chitchat",utterances=["how's the weather today?","how are things going?","lovely weather today","the weather is horrendous","let's go to the chippy",],
)# 当前route汇总
routes = [politics, chitchat]
# embedding编码器
encoder = OpenAIEncoder()## 定义Router层,在这一步会将routes中对应的描述(utterances)都向量编码并存储下来
rl = RouteLayer(encoder=encoder, routes=routes)## 对查询做判断属于哪一个Route.
## 实现逻辑: 用query与定义好的问句进行相似度计算,返回与query最相似的top 5个预先定义的问法,并对其根据Route进行分组,取分组分数之和最大(组内分数的聚合策略可选:sum/max/mean)的Route作为候选Route,如果这些匹配的问法里存在大于指定阈值的问法,则将该Route作为匹配Route返回,否则返回空。
rl("don't you love politics?")
# RouteChoice(name='politics', function_call=None, similarity_score=None)## 对查询做判断属于哪些Route.
## 实现逻辑: 用query与定义好的问句进行相似度计算,返回与query最相似的top 5个预先定义的问法,并对其根据Route进行分组,返回全部分数大于指定阈值的组,否则返回空。
rl.retrieve_multiple_routes("Hi! How are you doing in politics??")
#[RouteChoice(name='politics', function_call=None, similarity_score=0.8595844842560181),
# RouteChoice(name='chitchat', function_call=None, similarity_score=0.8356704527362284)]#######
######## dynamic route 可以定义 function_schema, 利用LLM的function call 能力进行函数解析 #######
from datetime import datetime
from zoneinfo import ZoneInfodef get_time(timezone: str) -> str:"""Finds the current time in a specific timezone.:param timezone: The timezone to find the current time in, shouldbe a valid timezone from the IANA Time Zone Database like"America/New_York" or "Europe/London". Do NOT put the placename itself like "rome", or "new york", you must providethe IANA format.:type timezone: str:return: The current time in the specified timezone."""now = datetime.now(ZoneInfo(timezone))return now.strftime("%H:%M")
from semantic_router.llms.openai import get_schemas_openaischemas = get_schemas_openai([get_time])time_route = Route(name="get_time",utterances=["what is the time in new york city?","what is the time in london?","I live in Rome, what time is it?",],function_schemas=schemas,
)
# 添加新定义的route
rl.add(time_route)
# 因为定义的get_time包含function_schemas,所以会在通过相似度计算得到匹配的route之后,用LLM的function call功能来返回待调用的函数参数
response = rl("what is the time in new york city?")
response
# RouteChoice(name='get_time', function_call=[{'function_name': 'get_time', 'arguments': {'timezone': 'America/New_York'}}], similarity_score=None)### 除了向量比较相似性外,还可以与关键词比较一起进行混合匹配,将两者的分数用alpha分配后相加
import os
from semantic_router.encoders import CohereEncoder, BM25Encoder, TfidfEncoder
from getpass import getpassdense_encoder = CohereEncoder()
# sparse_encoder = BM25Encoder()
sparse_encoder = TfidfEncoder()
from semantic_router.hybrid_layer import HybridRouteLayerdl = HybridRouteLayer(encoder=dense_encoder, sparse_encoder=sparse_encoder, routes=routes
)
dl("don't you love politics?")## RouteLayer的evaluate函数计算将问题正确分类的准确度
## RouteLayer的fit函数输入少量的标注数据,在max_iter次数内,每次随机为Route选取一个阈值,将准确率最高的阈值作为拟合出的阈值。

基于文本分类的Router

既然Router是在做类似意图分类的工作,我们可以使用文本分类模型来当Router。如果没有足够的语料来训练的话,可以先选Zero-shot text classfication模型来当做Router, haystack(source code)实现了用zero-shot分类模型来作为Router。

参考资料

  1. blog:Routing in RAG-Driven Applications
  2. LLamaindex router文档
  3. Langchain router文档
  4. Haystack router文档
http://www.yayakq.cn/news/719511/

相关文章:

  • dede汽车资讯网站源码网站建设在哪里进行
  • 简单的网站设计多少钱网站服务器做下载链接
  • 商城购物网站有哪些模块免费推广引流平台有哪些
  • 深圳做棋牌网站建设哪家公司便宜广东省外贸网站建设
  • 用宝塔给远程网站做备份廊坊网站seo排名
  • 福田做网站什么是网站黑链
  • 国外服务器电商网站wordpress禁用更新
  • 黑龙江建设网站打不开企业服务中心属于什么部门
  • 家居企业网站建设公司seo关键词优化培训班
  • 做网站公司销售开场白word调用wordpress
  • 鸟人高端网站建设网站建设需求模板
  • 用源代码做网站网校 039 网站建设多少钱
  • 昆明企业网站建设一条龙家乡网站建设策划书模板
  • 濮阳市做网站公司国外html5特效网站
  • 巴彦淖尔专业做网站的公司新塘网站设计
  • iis 制作搜索网站腾讯云 一键wordpress
  • 罗湖商城网站设计公司十堰秦楚网新闻中心
  • 公司如何建设网站首页郑州专业做淘宝网站
  • 彩票网站开发系统如何搭建站长之家查询网
  • 南京酒店网站制作网站除了wordpress外
  • 你认为公司在建立网站时应满足哪些目标常州经开区建设局网站
  • 哪些公司做网站好ios应用开发用什么语言
  • 设计案例网站重庆建网站推广
  • 龙元建设网站上海装修公司口碑最好的是哪家
  • 做网站用属于前端wordpress 注册菜单
  • 什么网站做简历比较好网站运营推广
  • 网站内部服务器错误中企动力做的网站经常打不开
  • 简单的手机网站模板网站建设需要什么编程语言
  • 怎么免费制作网站平台美御品牌推广
  • 白银网站seowordpress 5.0