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

爬虫网站怎么做免费的网站建设有哪些

爬虫网站怎么做,免费的网站建设有哪些,怎么从阿里巴巴做网站,公司建设包括哪些方面Rerank 在 RAG#xff08;Retrieval-Augmented Generation#xff09;过程中扮演了一个非常重要的角色#xff0c;普通的 RAG 可能会检索到大量的文档#xff0c;但这些文档可能并不是所有的都跟问题相关#xff0c;而 Rerank 可以对文档进行重新排序和筛选#xff0c;让…Rerank 在 RAGRetrieval-Augmented Generation过程中扮演了一个非常重要的角色普通的 RAG 可能会检索到大量的文档但这些文档可能并不是所有的都跟问题相关而 Rerank 可以对文档进行重新排序和筛选让相关的文档排在前面从而提高 RAG 的效果。 本文将介绍使用 HuggingFace 的 Text Embedding Inherence 工具部署 Rerank 模型以及演示如何在 LlamaIndex 的 RAG 中加入 Rerank 功能。 Rerank 介绍 RAG 是一种结合了信息检索和文本生成的语言模型技术。简单来说当你向大语言模型LLM提出一个问题时RAG 首先会在一个大型的文档集合中寻找相关信息然后再基于这些信息生成回答。 Rerank 的工作就像是一个智能的筛选器当 RAG 从文档集合中检索到多个文档时这些文档可能与你的问题相关度各不相同。有些文档可能非常贴切而有些则可能只是稍微相关或者甚至是不相关的。这时Rerank 的任务就是评估这些文档的相关性然后对它们进行重新排序。它会把那些最有可能提供准确、相关回答的文档排在前面。这样当 LLM 开始生成回答时它会优先考虑这些排名靠前的、更加相关的文档从而提高生成回答的准确性和质量。通俗来说Rerank 就像是在图书馆里帮你从一堆书中挑出最相关的那几本让你在寻找答案时更加高效和精准。 技术交流群 前沿技术资讯、算法交流、求职内推、算法竞赛、面试交流(校招、社招、实习)等、与 10000来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企开发者互动交流~ 我们建了大模型面试与技术交流群 想要进交流群、需要源码资料、提升技术的同学可以直接加微信号mlc2060。加的时候备注一下研究方向 学校/公司CSDN即可。然后就可以拉你进群了。 方式①、微信搜索公众号机器学习社区后台回复加群 方式②、添加微信号mlc2060备注技术交流 资料1 用通俗易懂方式讲解系列 用通俗易懂的方式讲解自然语言处理初学者指南附1000页的PPT讲解用通俗易懂的方式讲解NLP 这样学习才是正确路线用通俗易懂的方式讲解28张图全解深度学习知识用通俗易懂的方式讲解不用再找了这就是 NLP 方向最全面试题库用通俗易懂的方式讲解实体关系抽取入门教程用通俗易懂的方式讲解灵魂 20 问帮你彻底搞定Transformer用通俗易懂的方式讲解图解 Transformer 架构用通俗易懂的方式讲解大模型算法面经指南附答案用通俗易懂的方式讲解十分钟部署清华 ChatGLM-6B实测效果超预期用通俗易懂的方式讲解内容讲解代码案例轻松掌握大模型应用框架 LangChain用通俗易懂的方式讲解如何用大语言模型构建一个知识问答系统用通俗易懂的方式讲解最全的大模型 RAG 技术概览用通俗易懂的方式讲解利用 LangChain 和 Neo4j 向量索引构建一个RAG应用程序用通俗易懂的方式讲解使用 Neo4j 和 LangChain 集成非结构化知识图增强 QA用通俗易懂的方式讲解面了 5 家知名企业的NLP算法岗(大模型方向)被考倒了。。。。。 Rerank 模型部署 目前可用的 Rerank 模型并不多有 Cohere[1] 的线上模型通过 API 的形式进行调用。开源的模型有智源的bge-reranker-base[2]、bge-reranker-large[3]。今天我们将使用 bge-reranker-large 模型来进行部署演示。 Text Embedding Inherence 我们将使用 HuggingFace 推出的 Text Embedding Inherence以下简称 TEI工具来部署 Rerank 模型TEI 是一个用于部署和提供开源文本嵌入和序列分类模型的工具该工具主要是以部署 Embedding 模型为主但是也支持 Rerank 和其他类型的模型的部署同时它还支持部署兼容 OpenAI API 的 API 服务。 我们先进行 TEI 的安装安装方式有 2 种一种是通过 Docker 方式另外一种是通过源码安装的方式可以同时支持 GPU 和 CPU 的机器部署。 因为 Docker 安装需要有 GPU 的服务器而一些云 GPU 服务器不方便使用 Docker因此我们在 Mac M1 电脑上通过源码的方式来进行安装。 首先需要在电脑上安装 Rust建议安装 Rust 的最新版本 1.75.0安装命令如下 curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh然后下载 TEI 的 github 仓库并安装相关依赖命令如下 git clone https://github.com/huggingface/text-embeddings-inference.git cd text--embeddings-inference cargo install --path router -F candle -F metal其中 router 是 TEI 仓库里面的一个目录 安装成功后可以使用text-embeddings-router --help命令来查看工具的相关参数 TEI 安装完成后我们使用它来部署 Rerank 模型命令如下 text-embeddings-router --model-id BAAI/bge-reranker-large --revision refs/pr/5 --port 8080--model-id是指模型在 Huggingface 上的 IDrevision是相关的版本号 --port是指服务的端口号 执行命令后TEI 会从 Huggingface 上下载模型下载到本地路径~/.cache/huggingface/hub/models--BAAI--bge-reranker-large 服务启动后我们可以在浏览器访问地址http://localhost:8080/docs来查看服务的 API 文档 在图中可以看到有 Rerank 的接口我们尝试用 Curl 工具来调用该接口进行验证 curl -X POST \http://localhost:8080/rerank \-H accept: application/json \-H Content-Type: application/json \-d {query: What is Deep Learning?,texts: [Deep Learning is ...,hello] }# 显示结果 [{index:0,score:0.99729556},{index:1,score:0.00009387641} ]Rerank 的接口比较简单只需要传问题query和相关的文档texts这 2 个参数即可返回结果表示每个文档和问题的相似度分数然后按照分数大小来进行排序可以看到第一个文档与问题语义相近所以得分比较高第二个文档和问题不太相关所以得分低。 需要注意的是因为该模型是 Rerank 模型所以如果是调用其中的embedding接口会报模型不支持的错误。如果你想同时拥有 Rerank 和 Embedding 的功能可以再使用 TEI 部署一个 Embedding 模型只要端口号不冲突就可以了。 TEI 也支持 Embedding 模型和序列分类模型的部署其它模型的部署可以参考 TEI 的官方仓库[4]这里就不再赘述。 LlamaIndex 使用 Rerank 功能 我们先来看下 LlamaIndex 普通的 RAG 功能示例代码如下 from llama_index import ServiceContext, VectorStoreIndex, SimpleDirectoryReaderdocuments SimpleDirectoryReader(./data).load_data() service_context ServiceContext.from_defaults(llmNone) index VectorStoreIndex.from_documents(documents, service_contextservice_context) query_engine index.as_query_engine()response query_engine.query(健康饮食的好处是什么) print(fresponse: {response})data是放我们测试文档的目录测试文档内容待会会介绍 LlamaIndex 默认使用 OpenAI 的 LLM这样的话response是 LLM 生成的答案这里我们将llm设置为Noneresponse就只会显示传递给 LLM 的提示词模板 LlamaIndex 默认使用 OpenAI 的 Embedding 来向量化文档因此需要设置环境变量OPENAI_API_KEY为你的 OpenAI API Key 其他部分就是 LlamaIndex 的一个普通 RAG 代码加载目录文档解析分块索引保存最后进行查询 我们再来看下测试文档内容 $ tree data data/ ├── rerank-A.txt ├── rerank-B.txt └── rerank-C.txt$ cat rerank-A.txt ### 快餐的负面影响健康与生活方式的隐忧 快餐一种在现代快节奏生活中极为普遍的饮食选择......$ cat rerank-B.txt ### 选择有机选择健康探索有机食品的无限好处 在今天这个注重健康和可持续生活的时代......$ cat rerank-C.txt ### 健康饮食的益处营养学视角的探讨 摘要健康饮食是维持和提升整体健康的关键......这些测试文档都是和饮食相关的文档我们执行下代码看下结果 # response 显示结果 LLM is explicitly disabled. Using MockLLM. response: Context information is below. ------------------file_path: data/rerank-C.txt### 健康饮食的益处营养学视角的探讨 摘要健康饮食是维持和提升整体健康的关键.....file_path: data/rerank-A.txt### 快餐的负面影响健康与生活方式的隐忧 快餐一种在现代快节奏生活中极为普遍的饮食选择...... ------------------Given the context information and not prior knowledge, answer the query. Query: 健康饮食的好处是什么 Answer:可以看到程序会检索出和问题相似度最高的 2 个文档rerank-C.txt和rerank-A.txt但 A 文档似乎和问题关联性不大我们可以使用 Rerank 来改进这一点。 我们需要使用 LlamaIndex 的Node PostProcessor组件来调用 Rerank 功能Node Postprocessor 的作用是在查询结果传递到查询流程的下一个阶段之前修改或增强这些结果。因此我们先来定一个自定义的Node PostProcessor来调用我们刚才部署的 Rerank 接口代码如下 import requests from typing import List, Optional from llama_index.bridge.pydantic import Field, PrivateAttr from llama_index.postprocessor.types import BaseNodePostprocessor from llama_index.schema import NodeWithScore, QueryBundleclass CustomRerank(BaseNodePostprocessor):url: str Field(descriptionRerank server url.)top_n: int Field(descriptionTop N nodes to return.)def __init__(self,top_n: int,url: str,):super().__init__(urlurl, top_ntop_n)def rerank(self, query, texts):url f{self.url}/rerankrequest_body {query: query, texts: texts, truncate: False}response requests.post(url, jsonrequest_body)if response.status_code ! 200:raise RuntimeError(fFailed to rerank documents, detail: {response})return response.json()classmethoddef class_name(cls) - str:return CustomerRerankdef _postprocess_nodes(self,nodes: List[NodeWithScore],query_bundle: Optional[QueryBundle] None,) - List[NodeWithScore]:if query_bundle is None:raise ValueError(Missing query bundle in extra info.)if len(nodes) 0:return []texts [node.text for node in nodes]results self.rerank(queryquery_bundle.query_str,textstexts,)new_nodes []for result in results[0 : self.top_n]:new_node_with_score NodeWithScore(nodenodes[int(result[index])].node,scoreresult[score],)new_nodes.append(new_node_with_score)return new_nodes我们定义了一个CustomRerank类继承自BaseNodePostprocessor并实现了_postprocess_nodes方法 CustomRerank类有 2 个参数url是我们刚才部署的 Rerank 服务地址top_n是指返回的文档数量 在_postprocess_nodes方法中我们先将原始检索到的文档转化为文本列表再和问题一起传递给 rerank方法 rerank方法会调用 Rerank 接口这里要注意的是TEI 中的 texts参数每个文档的长度不能超过 512 个字符如果超过了会报 413 请求参数超过限制大小的错误这时可以将truncate参数设置为True接口会自动将过长的文档进行截断 得到 Rerank 的结果后我们根据top_n参数来截取前 N 个文档然后返回重新排序后的文档列表 我们再来看如何在 LlamaIndex 中使用CustomRerank代码如下 from custom_rerank import CustomRerank...... query_engine index.as_query_engine(node_postprocessors[CustomRerank(urlhttp://localhost:8080, top_n1)], )response query_engine.query(健康饮食的好处是什么) print(fresponse: {response})我们在as_query_engine方法中传递了node_postprocessors参数这里我们将CustomRerank类传递进去 在CustomRerank类中我们设置 Rerank 的 API 地址和 top_n 参数这里我们设置为 1表示只返回一个文档 修改完代码后我们再次运行程序可以看到结果如下 # response 显示结果 LLM is explicitly disabled. Using MockLLM. response: Context information is below. ------------------file_path: data/rerank-C.txt### 健康饮食的益处营养学视角的探讨 摘要健康饮食是维持和提升整体健康的关键.....------------------Given the context information and not prior knowledge, answer the query. Query: 健康饮食的好处是什么 Answer:可以看到这次传递给 LLM 的文档只有rerank-C.txtRerank 只获取了最接近问题的一个文档这样 LLM 生成的答案就更加准确了。我们可以在CustomRerank类打印原始检索的得分和经过 Rerank 后的得分结果如下所示 source node score: 0.8659382811170047 source node score: 0.8324490144594573 -------------------rerank node score: 0.9941347 rerank node score: 0.072374016可以看到两者的得分是有差距的这是因为原始检索和 Rerank 使用的模型不同所以得到的分数也不同。 总结 今天我们介绍了 Rerank 模型的部署和使用Rerank 模型可以帮助我们对检索到的文档进行重新排序让相关的文档排在前面并且过滤掉不相关的文档从而提高 RAG 的效果。我们使用 HuggingFace 的 Text Embedding Inherence 工具来部署 Rerank 模型同时演示了如何在 LlamaIndex 的 RAG 加入 Rerank 功能。希望本文对你有所帮助如果有什么问题欢迎在评论区留言。 关注我一起学习各种人工智能和 AIGC 新技术欢迎交流如果你有什么想问想说的欢迎在评论区留言。 参考: [1]Cohere: https://cohere.com/ [2] bge-reranker-base: https://huggingface.co/BAAI/bge-reranker-base [3]bge-reranker-large: https://huggingface.co/BAAI/bge-reranker-large [4]官方仓库: https://github.com/huggingface/text-embeddings-inference
http://www.pierceye.com/news/53986/

相关文章:

  • 做网站设计难吗国外机械做的好的网站
  • 网站建设流程步骤腾讯云重装wordpress
  • 校园网站建设简介有限公司和公司哪个好
  • 东莞网站优化关键词费用建设网络平台 英语
  • 美食网站网页设计代码吕梁seo排名
  • php网站后台怎么登陆企业手机端网站设计模板
  • 简单的网站开发模板锦州做网站
  • 北京市中关村有哪家可以做网站维护关键词推广效果
  • 柯城网站建设wordpress cdn
  • 做网站多少钱?杭州模板建站哪家好
  • 深圳电商网络网站建设网站建设_网站制作公司_捷创
  • 网站开发的项目总结网站设计的难点
  • 网站怎么换空间商做多个网站 买vps
  • 网站推广的定义及方法wordpress erphpdowns
  • 网站建设首选建站系统沧州开发网站多少钱
  • php做的网站首页是什么文件夹seo网站推广工作内容
  • 做网站沈阳本地做我男朋友好不好网站
  • 电商平台站内推广有哪些棉花数据检验与加工平台
  • 国内网站做得好的公司网站建设推广好处
  • 建设局网站打不开是什么原因不用建网站怎么做淘宝客
  • 网站开发环境有哪些php模版网站建设步骤详解
  • 福州网站建设公司中小企业福建设计招标网站
  • 网站做app服务端手机设计培训网站建设
  • 做网站网站要找谁wordpress统计和谷歌不同
  • 网站做网站做任务全自动引流推广软件
  • wordpress怎么上传自己的网站android开发基础教程
  • app软件小程序网站建设济南房地产信息网官网
  • 网站建设300元备案网站域名查询
  • app会替代网站吗网站页面高度
  • 在线培训网站次要关键词网站建设服务器怎么设置