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

网站的前台和后台百度爱采购官方网站

网站的前台和后台,百度爱采购官方网站,wordpress统计条,郑州做网站销售怎么样一、检索结果重复 1. 问题分析 在构建向量数据库时,对文档分割会存在重复块(chunk_overlap:指两个块之间共享的字符数量,用于保持上下文的连贯性,避免分割丢失上下文信息),如下图所示&#xf…

一、检索结果重复

1. 问题分析

在构建向量数据库时,对文档分割会存在重复块(chunk_overlap:指两个块之间共享的字符数量,用于保持上下文的连贯性,避免分割丢失上下文信息),如下图所示:
在这里插入图片描述
因此,在进行向量检索是容易出现检索到重复结果的情况,如下:

docs[0]
page_content='第⼀回:Matplotlib 初相识\n⼀、认识matplotlib\nMatplotlib 是⼀个 Python 2D 绘图库,能够以多种硬拷⻉格式和跨平台的交互式环境⽣成出版物质量的图形,⽤来绘制各种静态,动态,\n交互式的图表。\nMatplotlib 可⽤于 Python 脚本, Python 和 IPython Shell 、 Jupyter notebook , Web 应⽤程序服务器和各种图形⽤户界⾯⼯具包等。\nMatplotlib 是 Python 数据可视化库中的泰⽃,它已经成为 python 中公认的数据可视化⼯具,我们所熟知的 pandas 和 seaborn 的绘图接⼝\n其实也是基于 matplotlib 所作的⾼级封装。\n为了对matplotlib 有更好的理解,让我们从⼀些最基本的概念开始认识它,再逐渐过渡到⼀些⾼级技巧中。\n⼆、⼀个最简单的绘图例⼦\nMatplotlib 的图像是画在 figure (如 windows , jupyter 窗体)上的,每⼀个 figure ⼜包含了⼀个或多个 axes (⼀个可以指定坐标系的⼦区\n域)。最简单的创建 figure 以及 axes 的⽅式是通过 pyplot.subplots命令,创建 axes 以后,可以使⽤ Axes.plot绘制最简易的折线图。\nimport matplotlib.pyplot as plt\nimport matplotlib as mpl\nimport numpy as np\nfig, ax = plt.subplots()  # 创建⼀个包含⼀个 axes 的 figure\nax.plot([1, 2, 3, 4], [1, 4, 2, 3]);  # 绘制图像\nTrick: 在jupyter notebook 中使⽤ matplotlib 时会发现,代码运⾏后⾃动打印出类似 <matplotlib.lines.Line2D at 0x23155916dc0>\n这样⼀段话,这是因为 matplotlib 的绘图代码默认打印出最后⼀个对象。如果不想显示这句话,有以下三种⽅法,在本章节的代码示例\n中你能找到这三种⽅法的使⽤。\n\x00. 在代码块最后加⼀个分号 ;\n\x00. 在代码块最后加⼀句 plt.show()\n\x00. 在绘图时将绘图对象显式赋值给⼀个变量,如将 plt.plot([1, 2, 3, 4]) 改成 line =plt.plot([1, 2, 3, 4])\n和MATLAB 命令类似,你还可以通过⼀种更简单的⽅式绘制图像, matplotlib.pyplot⽅法能够直接在当前 axes 上绘制图像,如果⽤户\n未指定axes , matplotlib 会帮你⾃动创建⼀个。所以上⾯的例⼦也可以简化为以下这⼀⾏代码。\nline =plt.plot([1, 2, 3, 4], [1, 4, 2, 3]) \n三、Figure 的组成\n现在我们来深⼊看⼀下 figure 的组成。通过⼀张 figure 解剖图,我们可以看到⼀个完整的 matplotlib 图像通常会包括以下四个层级,这些\n层级也被称为容器( container ),下⼀节会详细介绍。在 matplotlib 的世界中,我们将通过各种命令⽅法来操纵图像中的每⼀个部分,\n从⽽达到数据可视化的最终效果,⼀副完整的图像实际上是各类⼦元素的集合。\nFigure:顶层级,⽤来容纳所有绘图元素' metadata={'source': 'docs/matplotlib/第一回:Matplotlib初相识.pdf', 'page': 0}
docs[1]
page_content='第⼀回:Matplotlib 初相识\n⼀、认识matplotlib\nMatplotlib 是⼀个 Python 2D 绘图库,能够以多种硬拷⻉格式和跨平台的交互式环境⽣成出版物质量的图形,⽤来绘制各种静态,动态,\n交互式的图表。\nMatplotlib 可⽤于 Python 脚本, Python 和 IPython Shell 、 Jupyter notebook , Web 应⽤程序服务器和各种图形⽤户界⾯⼯具包等。\nMatplotlib 是 Python 数据可视化库中的泰⽃,它已经成为 python 中公认的数据可视化⼯具,我们所熟知的 pandas 和 seaborn 的绘图接⼝\n其实也是基于 matplotlib 所作的⾼级封装。\n为了对matplotlib 有更好的理解,让我们从⼀些最基本的概念开始认识它,再逐渐过渡到⼀些⾼级技巧中。\n⼆、⼀个最简单的绘图例⼦\nMatplotlib 的图像是画在 figure (如 windows , jupyter 窗体)上的,每⼀个 figure ⼜包含了⼀个或多个 axes (⼀个可以指定坐标系的⼦区\n域)。最简单的创建 figure 以及 axes 的⽅式是通过 pyplot.subplots命令,创建 axes 以后,可以使⽤ Axes.plot绘制最简易的折线图。\nimport matplotlib.pyplot as plt\nimport matplotlib as mpl\nimport numpy as np\nfig, ax = plt.subplots()  # 创建⼀个包含⼀个 axes 的 figure\nax.plot([1, 2, 3, 4], [1, 4, 2, 3]);  # 绘制图像\nTrick: 在jupyter notebook 中使⽤ matplotlib 时会发现,代码运⾏后⾃动打印出类似 <matplotlib.lines.Line2D at 0x23155916dc0>\n这样⼀段话,这是因为 matplotlib 的绘图代码默认打印出最后⼀个对象。如果不想显示这句话,有以下三种⽅法,在本章节的代码示例\n中你能找到这三种⽅法的使⽤。\n\x00. 在代码块最后加⼀个分号 ;\n\x00. 在代码块最后加⼀句 plt.show()\n\x00. 在绘图时将绘图对象显式赋值给⼀个变量,如将 plt.plot([1, 2, 3, 4]) 改成 line =plt.plot([1, 2, 3, 4])\n和MATLAB 命令类似,你还可以通过⼀种更简单的⽅式绘制图像, matplotlib.pyplot⽅法能够直接在当前 axes 上绘制图像,如果⽤户\n未指定axes , matplotlib 会帮你⾃动创建⼀个。所以上⾯的例⼦也可以简化为以下这⼀⾏代码。\nline =plt.plot([1, 2, 3, 4], [1, 4, 2, 3]) \n三、Figure 的组成\n现在我们来深⼊看⼀下 figure 的组成。通过⼀张 figure 解剖图,我们可以看到⼀个完整的 matplotlib 图像通常会包括以下四个层级,这些\n层级也被称为容器( container ),下⼀节会详细介绍。在 matplotlib 的世界中,我们将通过各种命令⽅法来操纵图像中的每⼀个部分,\n从⽽达到数据可视化的最终效果,⼀副完整的图像实际上是各类⼦元素的集合。\nFigure:顶层级,⽤来容纳所有绘图元素' metadata={'source': 'docs/matplotlib/第一回:Matplotlib初相识.pdf', 'page': 0}

2.解决方法

最大边际相关性((MMR,Maximal Marginal Relevance):基本思想是同时考量查询与文档的相关度,以及文档之间的相似度。它把搜索结果中相似度很高的文档做了过滤,所以它保留了结果的相关性又同时兼顾了结果的多样性。

smalldb_chinese.max_marginal_relevance_search(question_chinese,k=2, fetch_k=3)
#k=3 ,获取 3 个文档,k=2 表示返回最不同的 2 个文档。

二、检索错误答案

1.问题分析

当询问关于文档中某一讲的问题,但得到的结果中也包括了来自其他讲的结果,如下所示:

# 提问:
question_chinese = "他们在第二讲中对Figure说了些什么?"
docs_chinese = vectordb_chinese.similarity_search(question_chinese,k=5)
for doc_chinese in docs_chinese:print(doc_chinese.metadata)# 检索结果:
{'source': 'docs/matplotlib/第一回:Matplotlib初相识.pdf', 'page': 0}
{'source': 'docs/matplotlib/第一回:Matplotlib初相识.pdf', 'page': 0}
{'source': 'docs/matplotlib/第二回:艺术画笔见乾坤.pdf', 'page': 9}
{'source': 'docs/matplotlib/第二回:艺术画笔见乾坤.pdf', 'page': 10}
{'source': 'docs/matplotlib/第一回:Matplotlib初相识.pdf', 'page': 1}

2.解决办法

(1)使用元数据进行过滤

#提问:
question_chinese = "他们在第二讲中对Figure说了些什么?"
docs_chinese = vectordb_chinese.similarity_search(question_chinese,k=3,filter={"source":"docs/matplotlib/第二回:艺术画笔见乾坤.pdf"}
)
for d in docs_chinese:print(d.metadata)#检索结果:
{'source': 'docs/matplotlib/第二回:艺术画笔见乾坤.pdf', 'page': 9}
{'source': 'docs/matplotlib/第二回:艺术画笔见乾坤.pdf', 'page': 10}
{'source': 'docs/matplotlib/第二回:艺术画笔见乾坤.pdf', 'page': 0}

(2)LLM辅助检索

LangChain提供了SelfQueryRetriever模块,它可以通过语言模型从问题语句中分析出:
a:向量搜索的查询字符串(search term)
b:过滤文档的元数据条件(Filter)

# 提问:
# 使用 SelfQueryRetriever 构建一个支持自然语言查询的向量检索器
retriever_chinese = SelfQueryRetriever.from_llm(llm,  # 语言模型,用于将用户的自然语言查询转换为结构化检索指令(如过滤条件、关键词等)vectordb_chinese,  # 向量数据库,用于实际的向量相似度检索(比如 Chroma、FAISS、Milvus 等)document_content_description_chinese,  # 字符串,描述文档的主要内容类型,例如“这是关于中国古代文学的文档”metadata_field_info_chinese,  # 元信息字段描述列表,定义哪些元数据字段可以被过滤,并提供字段的说明。例如: # [AttributeInfo(name="作者", description="文章的作者", type="string"), ...]verbose=True  # 是否打印详细的解释和调试信息(例如构造出的查询表达式等),便于理解 LLM 是如何生成查询的
)
question_chinese = "他们在第二讲中对Figure做了些什么?"
docs_chinese = retriever_chinese.get_relevant_documents(question_chinese)
for d in docs_chinese:print(d.metadata)#检索结果:
{'source': 'docs/matplotlib/第二回:艺术画笔见乾坤.pdf', 'page': 9}
{'source': 'docs/matplotlib/第二回:艺术画笔见乾坤.pdf', 'page': 10}
{'source': 'docs/matplotlib/第二回:艺术画笔见乾坤.pdf', 'page': 0}
{'source': 'docs/matplotlib/第二回:艺术画笔见乾坤.pdf', 'page': 6}

三、检索结果冗余

1.问题分析

在使用向量检索获取相关文档时,直接返回整个文档片段可能带来资源浪费,因为实际相关的只是文档的一小部分。为改进这一点,LangChain提供了一种“压缩”检索机制。其工作原理是,先使用标准向量检索获得候选文档,然后基于查询语句的语义,使用语言模型压缩这些文档,只保留与问题相关的部分。例如,对“蘑菇的营养价值”这个查询,检索可能返回整篇有关蘑菇的长文档。经压缩后,只提取文档中与“营养价值”相关的句子。

2.解决办法

#提问:
from langchain.retrievers import ContextualCompressionRetriever
from langchain.retrievers.document_compressors import LLMChainExtractordef pretty_print_docs(docs):print(f"\n{'-' * 100}\n".join([f"Document {i+1}:\n\n" + d.page_content for i, d in enumerate(docs)]))llm = OpenAI(temperature=0)
compressor = LLMChainExtractor.from_llm(llm)  # 压缩器compression_retriever_chinese = ContextualCompressionRetriever(base_compressor=compressor,base_retriever=vectordb_chinese.as_retriever()
)
# 对源文档进行压缩question_chinese = "Matplotlib是什么?"
compressed_docs_chinese = compression_retriever_chinese.get_relevant_documents(question_chinese)
pretty_print_docs(compressed_docs_chinese)#输出结果:
Document 1:Matplotlib 是⼀个 Python 2D 绘图库,能够以多种硬拷⻉格式和跨平台的交互式环境⽣成出版物质量的图形,⽤来绘制各种静态,动态,交互式的图表。
----------------------------------------------------------------------------------------------------
Document 2:Matplotlib 是⼀个 Python 2D 绘图库,能够以多种硬拷⻉格式和跨平台的交互式环境⽣成出版物质量的图形,⽤来绘制各种静态,动态,交互式的图表。
http://www.dtcms.com/wzjs/436514.html

相关文章:

  • 做电影网站失败河南品牌网络推广外包
  • 360检测网站开发语言的工具自己的品牌怎么做加盟推广
  • 株洲网站建设百度广告语
  • 自己有网站怎么做竞价百度最新版下载
  • 营销型网站报价免费数据统计网站
  • 西安网站开发外包免费培训课程
  • 大学生创业网站建设方案优化大师官网登录入口
  • 直销网站建设云优化
  • 上海建企业网站免费推广网站2024
  • 中小企业网站建设济南兴田德润电话百度竞价开户多少钱
  • 简单的网站设计模板下载百度上怎么发布信息啊
  • 网站建设案例要多少钱海外市场推广做什么的
  • 有什么兼职做设计的网站好优化设计五年级下册语文答案
  • 东莞做企业网站googleplaystore
  • 做请柬网站谷歌网站
  • 客户说做网站价格高广州网站seo地址
  • 界面漂亮的网站中国大数据平台官网
  • 源码建网站广告推广一个月多少钱
  • 某女性门户源码含数据模板不错分类全适合做女性网站介绍网络营销的短文
  • 甘肃城乡建设局网站西安疫情最新通知
  • 企业网站标题如何设置武汉网络优化知名乐云seo
  • 深圳家居网站建设公司重庆疫情最新数据
  • 网站的内链是什么意思前端seo是什么意思
  • 自助网站建设费用奶茶软文案例300字
  • 郑州做网站和域名网络服务器价格
  • 景观设计公司资质seo主要做什么
  • 上虞网站建设正规推广平台有哪些
  • 重庆今天刚刚发生的新闻事件湖北网络推广seo
  • 微博网站建设宁德网站建设制作
  • 手机可以搭建网站吗计算机培训班有用吗