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

天津网站建立做后期的网站

天津网站建立,做后期的网站,德阳手机网站建设,百度哪个网站做贸易1.问题#xff1a;向量检索也易混淆#xff0c;而关键字会更精准 在实际生产中#xff0c;传统的关键字检索#xff08;稀疏表示#xff09;与向量检索#xff08;稠密表示#xff09;各有利弊。 举个具体例子#xff0c;比如文档中包含很长的专有名词#xff0c; 关…1.问题向量检索也易混淆而关键字会更精准 在实际生产中传统的关键字检索稀疏表示与向量检索稠密表示各有利弊。 举个具体例子比如文档中包含很长的专有名词 关键字检索往往更精准 而向量检索容易引入概念混淆。 # 背景说明在医学中“小细胞肺癌”和“非小细胞肺癌”是两种不同的癌症query 非小细胞肺癌的患者documents [玛丽患有肺癌癌细胞已转移,刘某肺癌I期,张某经诊断为非小细胞肺癌III期,小细胞肺癌是肺癌的一种 ]query_vec get_embeddings([query])[0] doc_vecs get_embeddings(documents)print(Cosine distance:) for vec in doc_vecs:print(cos_sim(query_vec, vec))#### 输出Cosine distance: 0.8915268056308027 0.8895478505819983 0.9039165614288258 0.91314416459026852.解决混合检索结合不同检索算法 所以有时候我们需要结合不同的检索算法来达到比单一检索算法更优的效果。这就是混合检索。 混合检索的核心是综合文档 d d d 在不同检索算法下的排序名次rank为其生成最终排序。 一个最常用的算法叫 Reciprocal Rank FusionRRF r r f ( d ) ∑ a ∈ A 1 k r a n k a ( d ) rrf(d)\sum_{a\in A}\frac{1}{krank_a(d)} rrf(d)∑a∈A​kranka​(d)1​ 其中 A A A 表示所有使用的检索算法的集合 r a n k a ( d ) rank_a(d) ranka​(d) 表示使用算法 a a a 检索时文档 d d d 的排序 k k k 是个常数。 很多向量数据库都支持混合检索比如 Weaviate、Pinecone 等。也可以根据上述原理自己实现。 3.简单示例 3.1 基于关键字检索的排序 import timeclass MyEsConnector:def __init__(self, es_client, index_name, keyword_fn):self.es_client es_clientself.index_name index_nameself.keyword_fn keyword_fndef add_documents(self, documents):文档灌库if self.es_client.indices.exists(indexself.index_name):self.es_client.indices.delete(indexself.index_name)self.es_client.indices.create(indexself.index_name)actions [{_index: self.index_name,_source: {keywords: self.keyword_fn(doc),text: doc,id: fdoc_{i}}}for i, doc in enumerate(documents)]helpers.bulk(self.es_client, actions)time.sleep(1)def search(self, query_string, top_n3):检索search_query {match: {keywords: self.keyword_fn(query_string)}}res self.es_client.search(indexself.index_name, querysearch_query, sizetop_n)return {hit[_source][id]: {text: hit[_source][text],rank: i,}for i, hit in enumerate(res[hits][hits])}from chinese_utils import to_keywords # 使用中文的关键字提取函数# 引入配置文件 ELASTICSEARCH_BASE_URL os.getenv(ELASTICSEARCH_BASE_URL) ELASTICSEARCH_PASSWORD os.getenv(ELASTICSEARCH_PASSWORD) ELASTICSEARCH_NAME os.getenv(ELASTICSEARCH_NAME)es Elasticsearch(hosts[ELASTICSEARCH_BASE_URL], # 服务地址与端口http_auth(ELASTICSEARCH_NAME, ELASTICSEARCH_PASSWORD), # 用户名密码 )# 创建 ES 连接器 es_connector MyEsConnector(es, demo_es_rrf, to_keywords)# 文档灌库 es_connector.add_documents(documents)# 关键字检索 keyword_search_results es_connector.search(query, 3)print(json.dumps(keyword_search_results, indent4, ensure_asciiFalse)){doc_2: {text: 张某经诊断为非小细胞肺癌III期,rank: 0},doc_0: {text: 玛丽患有肺癌癌细胞已转移,rank: 1},doc_3: {text: 小细胞肺癌是肺癌的一种,rank: 2} }## 3.2 基于向量检索的排序python # 创建向量数据库连接器 vecdb_connector MyVectorDBConnector(demo_vec_rrf, get_embeddings)# 文档灌库 vecdb_connector.add_documents(documents)# 向量检索 vector_search_results {doc_str(documents.index(doc)): {text: doc,rank: i}for i, doc in enumerate(vecdb_connector.search(query, 3)[documents][0]) } # 把结果转成跟上面关键字检索结果一样的格式print(json.dumps(vector_search_results, indent4, ensure_asciiFalse)){doc_3: {text: 小细胞肺癌是肺癌的一种,rank: 0},doc_2: {text: 张某经诊断为非小细胞肺癌III期,rank: 1},doc_0: {text: 玛丽患有肺癌癌细胞已转移,rank: 2} }3.3 基于 RRF 的融合排序 def rrf(ranks, k1):ret {}# 遍历每次的排序结果for rank in ranks:# 遍历排序中每个元素for id, val in rank.items():if id not in ret:ret[id] {score: 0, text: val[text]}# 计算 RRF 得分ret[id][score] 1.0/(kval[rank])# 按 RRF 得分排序并返回return dict(sorted(ret.items(), keylambda item: item[1][score], reverseTrue))import json# 融合两次检索的排序结果 reranked rrf([keyword_search_results, vector_search_results])print(json.dumps(reranked, indent4, ensure_asciiFalse)){doc_2: {score: 1.5,text: 张某经诊断为非小细胞肺癌III期},doc_3: {score: 1.3333333333333333,text: 小细胞肺癌是肺癌的一种},doc_0: {score: 0.8333333333333333,text: 玛丽患有肺癌癌细胞已转移} }RAG-Fusion RAG-Fusion 就是利用了 RRF 的原理来提升检索的准确性。 RRF reciprocal rank fusion 倒秩融合 原始项目非常简短的演示代码https://github.com/Raudaschl/rag-fusion
http://www.dnsts.com.cn/news/10260.html

相关文章:

  • 成品小说网站源码电子商务网站建设的核心硬件
  • 做爰的网站书城网站建设规划书
  • 网站建设 网站开发久久网会上市吗
  • 做三年网站需要多少钱山东网
  • 淮南网官方网站一个网站开发的权限
  • 岳阳网站定制怎么给自己制作一个网站
  • 网站收录查询代码网站开发工具最适合
  • 廊坊市建设网站伊通县建设局网站
  • 个人空间网站建设报告服装设计师接单网站
  • 焦作seo推广周口网站seo
  • 新手建站论坛手机网站快速排名 软件
  • 营销企业网站建设应遵守的原则网站建设600元包
  • 网站备案期间做网页一站式装修公司有哪些
  • 做分销微商城网站wordpress主题版权
  • 网站百度屏蔽关键词html网站建设
  • 怎样下载模板做网站加强思政部网站建设
  • 企业网站设计网福州seo代理商
  • win7iis添加网站网页游戏在线玩链接
  • 跨境电商网站建设方案书企业网站建设进什么科目核算
  • 汽配人网做网站网站开发去哪学
  • 连云港市网站平台建筑专业人才招聘网
  • 什么网站合适做流量西安注册公司需要几天
  • 百度网站宁波网站建设选择荣胜网络
  • 工程造价信息价在什么网站查wordpress 改系统
  • 建设网站规划书襄阳营销型网站建设
  • 微信网站名网站建设题目
  • 织梦装修网站模板网站开发 哪家好
  • 关于网站建设的合同协议做特效很牛的一个外国网站
  • 专门做装修的网站有哪些企业官网营销推广
  • 罗湖网站建设多少钱wordpress企业官网