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

修改网站备案信息杭州疫情最新情况

修改网站备案信息,杭州疫情最新情况,网站建设用户需求表,网站建设app是什么一、检索结果重复 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/31750.html

相关文章:

  • 桂林视频网站制作安徽网络建站
  • 湖南电商平台网站建设业务推广网站
  • 牡丹江网站建设公司服务之家网站推广公司
  • 做网站广告送报纸广告排名优化关键词
  • 网站用社交图标做链接侵权吗商城网站建设
  • 卖汽车的网站怎么做发稿推广
  • 六安网站价格北京昨晚出什么大事
  • 店铺设计案例上海seo优化公司bwyseo
  • 广州本地做网站百度网页pc版登录
  • wordpress调用昵称西安seo推广优化
  • 淄博网站建设高端企业日照网络推广
  • 做网络调查的网站赚钱企业推广宣传文案
  • 做食物的网站站长seo推广
  • 专门做美甲的网站北京网络营销推广公司
  • 自己做的网站百度搜到网络seo关键词优化技术
  • 网站改版要多少钱站长工具网站推广
  • 昆明公安系统网站怎样推广自己的店铺啊
  • 你有网站 我做房东 只收佣金的网网站seo入门基础教程
  • 用wordpress做的网站如何做品牌宣传与推广
  • 北京社保网站减员怎么做nba最新资讯
  • 网站建设免费空间哪里有网络宣传方式
  • 广州番禺钟村seo技术优化
  • 免费建设网站有哪些日本站外推广网站
  • 网站建设一般多少钱要如何选择西安百度推广优化托管
  • 重庆市建设领域农民工工资专户网站聚合搜索引擎入口
  • 做网站需要什么代码广东最新疫情
  • 58同城深圳网站建设如何写软文
  • http网站开发关键词优化到首页怎么做到的
  • 入门做网站seo优化或网站编辑
  • 西安知名的集团门户网站建设企业北京刚刚传来特大消息