LLMs之PaperQA2:PaperQA2的简介、安装和使用方法、案例应用之详细攻略

LLMs之PaperQA2:PaperQA2的简介、安装和使用方法、案例应用之详细攻略

目录

PaperQA2的简介

1、PaperQA2 与 PaperQA 的比较

2、版本 5 (即 PaperQA2) 中的新功能是什么?

3、PaperQA2 算法

PaperQA2的安装和使用方法

1、安装

安装

CLI 使用

捆绑设置

2、库使用

手动提问

手动添加文档

异步

选择模型

本地托管

更改嵌入模型

调整来源数量

使用代码或 HTML

使用外部数据库/向量数据库和缓存

创建索引

清单文件

重用索引

3、在LitQA v2上运行

直接使用客户端

4、我从哪里获取论文?

Zotero

论文抓取器

回调

缓存嵌入

自定义提示

预置和后置提示

5、快速入门

示例输出

6、常见问题

为什么我的结果与你们的论文不同?

这与LlamaIndex或LangChain有何不同?

我可以保存或加载吗?

PaperQA2的案例应用


PaperQA2的简介

PaperQA2是一个高精度的检索增强生成(RAG)工具,专注于处理科学文献。它通过整合文档元数据、嵌入和大型语言模型(LLM)来提供基于文本的引文答案。PaperQA2旨在超越人类在科学任务中的表现,如问答、总结和矛盾检测。以下是其主要特点:

>> 简单的界面:提供引文支持的答案

>> 文档元数据感知:在嵌入中使用元数据,并通过LLM进行重新排序和上下文总结。

>> Agentic RAG支持:语言代理可以迭代优化查询和答案。

>> 自动提取元数据:从多个提供商获取文献的引文和期刊质量数据。

>> 全文搜索引擎:支持本地存储库的PDF或文本文件搜索。

>> 可定制接口:默认支持所有LiteLLM模型,也可使用其他模型或嵌入。

GitHub地址:https://github.com/Future-House/paper-qa

1、PaperQA2 与 PaperQA 的比较

我们一直在努力进行根本性的升级,并且大部分遵循 SemVer 版本号规则。这意味着我们在每次不兼容的变更时都会递增主版本号。这就带我们来到了当前的主要版本号 v5。那么为什么现在仓库被称为 PaperQA2?我们想要指出的是,我们在许多重要指标上已经超越了人类的表现。因此,我们将版本 5 及之后称为 PaperQA2,之前的版本则称为 PaperQA1,以表示性能上的显著变化。我们承认 FutureHouse 在命名和计数方面存在挑战,所以我们保留随时任意更名的权利,例如改为 PaperCrow。

2、版本 5 (即 PaperQA2) 中的新功能是什么?

版本 5 添加了:

>> 一个 CLI pqa

>> 调用工具进行论文搜索、收集证据和生成答案的代理工作流程

>> 从 Docs 对象中移除了大量的状态保持

>> 迁移至 LiteLLM 以便与许多 LLM 提供商兼容,同时集中速率限制和成本跟踪

>> 一套打包的配置(阅读此处),包含已知良好的超参数

请注意,从先前版本的 PaperQA 中序列化的 Docs 对象与版本 5 不兼容,需要重建。另外,我们的最低 Python 版本已提升至 Python 3.11。

3、PaperQA2 算法

要理解 PaperQA2,让我们从底层算法的组成部分开始。PaperQA2 的默认工作流程如下:

阶段

PaperQA2 动作

1. 论文搜索

>> 从 LLM 生成的关键字查询中获取候选论文

>> 将候选论文分块、嵌入并添加到状态中

2. 收集证据

>> 将查询嵌入向量

>> 对当前状态中的前 k 个文档片段进行排序

>> 创建每个片段在当前查询上下文中的得分摘要

>> 使用 LLM 重新评分并选择最相关的摘要

3. 生成答案

>> 将最佳摘要放入带有上下文的提示中

>> 使用提示生成答案

这些工具可以由语言代理以任意顺序调用。例如,一个 LLM 代理可能会执行窄范围和宽范围的搜索,或者在收集证据步骤和生成答案步骤之间使用不同的措辞

PaperQA2的安装和使用方法

1、安装

PaperQA2 依赖于一些出色的库/API,使我们的仓库成为可能。这里列出了一些,不分先后顺序:

Semantic Scholar

Crossref

Unpaywall

Pydantic

tantivy

LiteLLM

pybtex

PyMuPDF

安装

对于非开发环境,请从 PyPI 安装 PaperQA2:

pip install paper-qa

对于开发环境设置,请参考 CONTRIBUTING.md 文件。

PaperQA2 使用 LLM 来操作,因此您需要设置合适的 API 密钥环境变量(例如 export OPENAI_API_KEY=sk-...)或设置一个开源 LLM 服务器(例如使用 llamafile。任何与 LiteLLM 兼容的模型都可以配置为与 PaperQA2 一起使用。

如果您需要索引大量论文(100+),您可能希望获得 Crossref 和 Semantic Scholar 的 API 密钥,这样可以让您避免使用这些元数据服务时碰到公共速率限制。这些可以导出为 CROSSREF_API_KEY 和 SEMANTIC_SCHOLAR_API_KEY 变量。

CLI 使用

测试 PaperQA2 最快的方式是通过 CLI。首先导航到包含一些论文的目录,并使用 pqa cli:

$ pqa ask '双特异性抗体有哪些独特的制造挑战?'

您会看到 PaperQA2 为您的本地 PDF 文件建立索引,收集每篇论文所需的元数据(使用 Crossref 和 Semantic Scholar),在该索引上搜索,然后将文件分割成证据上下文块,对它们进行排序,最终生成答案。下次查询此目录时,您的索引已经被构建(除非检测到差异,例如新添加的论文),因此它将跳过索引和分块步骤。

所有先前的答案都将被索引并存储,您可以通过 search 子命令查询它们,或者自己在 PQA_HOME 目录中访问它们,默认位置为 ~/.pqa/。

$ pqa search -i 'answers' 'antibodies'

PaperQA2 是高度可配置的,当从命令行运行时,pqa --help 显示所有选项和简短描述。例如,要以更高的温度运行:

$ pqa --temperature 0.5 ask '双特异性抗体有哪些独特的制造挑战?'

您可以使用 pqa view 查看所有设置。另一个有用的功能是切换到其他模板设置——例如 fast 是一种更快回答的设置,您可以使用 pqa -s fast view 查看

也许您有一些新的设置想要保存?您可以这样做:

pqa -s my_new_settings --temperature 0.5 --llm foo-bar-5 save

然后您可以使用它:

pqa -s my_new_settings ask '双特异性抗体有哪些独特的制造挑战?'

如果您使用需要重新索引的命令运行 pqa,比如说如果您更改了默认的 chunk_size,将会为您自动创建一个新的索引。

pqa --parsing.chunk_size 5000 ask '双特异性抗体有哪些独特的制造挑战?'

您还可以使用 pqa 结合 LLM 进行全文搜索,查看 search 命令。例如,让我们保存一个目录的索引并给它命名:

pqa -i nanomaterials index

现在我可以搜索有关热电材料的论文:

pqa -i nanomaterials search thermoelectrics

或者我可以使用正常的 ask

pqa -i nanomaterials ask '热电材料中是否存在纳米尺度的特征?'

CLI 和模块都有基于之前表现和我们出版物预先配置的设置,可以按照以下方式调用:

pqa --settings <setting name> ask '热电材料中是否存在纳米尺度的特征?'

捆绑设置

在 paperqa/configs 中,我们捆绑了已知有用的设置:

设置名称

描述

high_quality

使用 ToolSelector 代理进行的高性能查询,相对昂贵(因为 evidence_k = 15)。

fast

用于快速且低成本获取答案的设置。

wikicrow

模仿我们在 WikiCrow 出版物中使用的维基百科文章写作的设置。

contracrow

用于查找论文中的矛盾之处的设置;您的查询应该是一个需要被标记为矛盾(或不是)的声明。

2、库使用

可以通过 Python 访问 PaperQA2 的完整工作流程。

PaperQA2 的完整工作流程可以直接通过 Python 访问:

请参阅我们的安装文档以了解如何从 PyPI 安装该软件包。

手动提问

答案对象具有以下属性:formatted_answer(格式化后的答案),answer(单独的答案),question(问题),和 context(为答案找到的段落摘要)。ask 将使用 SearchPapers 工具,该工具将查询本地文件索引,您可以通过 Settings 对象指定这个位置:

ask 只是一个方便的包装器,如果您希望运行并发异步工作负载,可以访问真实入口点:

默认代理将使用基于 LLM 的代理,但您也可以指定一个“假”代理来使用硬编码的搜索 -> 收集证据 -> 回答路径,以减少令牌使用。

手动添加文档

如果您更喜欢精细控制,并且希望自行向 docs 对象中添加对象(而不是使用搜索工具),则可以使用之前存在的 Docs 对象接口:

异步

PaperQA2 是为了异步使用而编写的。同步 API 只是异步 API 的一个包装。这里是方法及其异步等效项:

同步版本只是在一个循环中调用异步版本。大多数现代 Python 环境都支持原生异步(包括 Jupyter 笔记本!)。因此,您可以在 Jupyter Notebook 中执行如下操作:

选择模型

默认情况下,它使用 OpenAI 模型 gpt-4o-2024-08-06 进行重新排序和总结步骤,summary_llm 设置以及回答步骤中的 llm 设置。您可以轻松调整这些设置:

您可以使用 Anthropic 或任何其他由 litellm 支持的模型:

本地托管

您可以使用 llama.cpp 作为 LLM。请注意,您应该使用相对较大的模型,因为 PaperQA2 需要遵循很多指令。7B 模型不会带来良好的性能。

最简单的设置方法是下载一个 llama 文件并使用 -cb -np 4 -a my-llm-model --embedding 执行,这将启用连续批处理和嵌入。

更改嵌入模型

PaperQA2 默认使用 OpenAI (text-embedding-3-small) 嵌入,但对于向量存储和嵌入选项都有灵活的选择。更改嵌入最简单的方法是通过传递给 Settings 对象构造函数的 embedding 参数:

embedding 接受 litellm 支持的任何嵌入模型名称。PaperQA2 也支持使用 "hybrid-<model_name>" 形式的嵌入输入,例如 "hybrid-text-embedding-3-small" 来使用混合稀疏关键字(基于令牌模数嵌入)和密集向量嵌入,其中任意 litellm 模型都可以用于密集模型名称。"sparse" 可以用来仅使用稀疏关键字嵌入。

嵌入模型用于创建 PaperQA2 的全文嵌入向量索引(texts_index 参数)。在向 Docs 对象添加新论文时,可以指定嵌入模型作为设置:

注意 PaperQA2 使用 Numpy 作为密集向量存储。其设计是首先使用关键词搜索来减少每个答案所需的分块数量至相对较小的数量 < 1k。因此,NumpyVectorStore 是一个很好的起点,它是一个简单的内存存储,没有索引。然而,如果需要大于内存的向量存储,我们目前在这方面有所不足。

混合嵌入可以自定义:

稀疏嵌入(关键词)模型默认有 256 维,但这可以通过 ndim 参数指定。

调整来源数量

您可以调整来源(文本段落)的数量以减少令牌使用或增加更多上下文。k 指的是前 k 个最相关且多样化的(可能来自不同来源)段落。每个段落都将发送给 LLM 以进行总结,或者确定是否无关。在这一步之后,应用 max_sources 的限制,使得最终答案能够适应 LLM 上下文窗口。因此,k > max_sources 并且 max_sources 是最终答案中使用的来源数量。

使用代码或 HTML

您不必使用论文——您可以使用代码或原始 HTML。请注意,此工具专注于回答问题,因此它不擅长编写代码。需要注意的一点是,工具无法从代码中推断引用,因此您需要自己提供它们。

使用外部数据库/向量数据库和缓存

您可能希望在外部数据库或文件中缓存解析后的文本和嵌入。然后,您可以直接从这些数据构建 Docs 对象:

创建索引

索引默认会放置在家目录中。这可以通过 PQA_HOME 环境变量控制。

索引是通过读取 Settings.paper_directory 中的文件创建的。默认情况下,我们递归地从论文目录的子目录读取,除非使用 Settings.index_recursively 禁用。论文目录不会被修改,只是从中读取。

清单文件

索引过程尝试使用 LLM 动力的文本处理来推断论文元数据,如标题和 DOI。您可以通过使用“清单”文件来避免这种不确定性,该文件是一个包含三列的 CSV 文件(顺序无关紧要):

file_location: 相对于索引目录的论文 PDF 的相对路径

doi: 论文的 DOI

title: 论文的标题

通过提供这些信息,我们可以确保对像 Crossref 这样的元数据提供商的查询是准确的。

重用索引

本地搜索索引是根据当前 Settings 对象的哈希值构建的。因此,请确保正确指定了 paper_directory 到您的 Settings 对象。通常建议:

根据论文文件夹预建索引(可能需要几分钟)

重用索引来执行许多查询

3、在LitQA v2上运行

在paperqa/agents/task.py中,您将找到:

GradablePaperQAEnvironment:一个可以根据评估函数对答案进行评分的环境。

LitQAv2TaskDataset:一个任务数据集,设计用于从Hugging Face拉取LitQA v2,并为每个问题创建一个GradablePaperQAEnvironment。

这里是如何使用它们的一个示例:

直接使用客户端

PaperQA2最强大的功能之一是能够结合来自多个元数据源的数据。例如,Unpaywall可以提供开放访问状态/直接链接到PDF,Crossref可以提供bibtex,而Semantic Scholar可以提供引用许可。下面是一个简短的演示如何实现这一点的例子:

client.query旨在检查标题的完全匹配。它相对健壮(比如对大小写、缺少单词的情况)。不过,由于标题可能有重复——因此您可以添加作者来消除歧义。或者,您可以直接提供DOI client.query(doi="10.1038/s42256-024-00832-8")。

如果您大规模地这样做,您可能不想使用ALL_CLIENTS(只需省略参数),并且可以指定您想要的具体字段以加快查询速度。例如:

这将比第一个查询返回得快得多,并且我们可以确定作者是匹配的。

4、我从哪里获取论文?

这是一个非常好的问题!最好的办法可能是下载您认为有助于回答您的问题的论文的PDF,并从那里开始。

Zotero

自从我们测试这个以来已经有一段时间了——所以如果遇到问题请告诉我们!

如果您使用Zotero来组织个人书目,可以使用paperqa.contrib.ZoteroDB通过pyzotero从您的库中查询论文。

通过zotero额外安装pyzotero以获得此功能:

pip install paperqa[zotero]

首先,请注意PaperQA2会解析论文的PDF以存储在数据库中,因此所有相关论文都应在其数据库内存储PDF。您可以高亮显示希望检索的参考文献,右键单击并选择“查找可用PDF”让Zotero自动执行此操作。您也可以手动将PDF拖放到每个参考文献上。

要下载论文,您需要为您的账户获取API密钥。

获取您的库ID,并将其设置为环境变量ZOTERO_USER_ID。

对于个人库,该ID在这里的部分“Your userID for use in API calls is XXXXXX”给出。

对于群组库,转到您的群组页面https://www.zotero.org/groups/groupname,并悬停在设置链接上。ID是在/groups/之后的整数。(感谢pyzotero!)

在此处创建一个新的API密钥,并将其设置为环境变量ZOTERO_API_KEY。

密钥需要对库具有读取权限。

有了这些,我们可以从我们的库下载论文并将它们添加到PaperQA2中:

论文抓取器

如果您想搜索自己收藏之外的论文,我发现了一个与此无关的项目叫做paper-scraper,看起来可能会有所帮助。但请注意,该项目似乎使用了一些可能违反出版商权利或处于法律灰色地带的抓取工具。

回调

要在每个LLM完成块上执行一个函数,您需要提供一个可以在每个块上执行的函数。例如,为了得到完成项的打字机视图,您可以这样做:

缓存嵌入

一般来说,无论使用何种向量存储,当您pickle一个Docs时,嵌入都会被缓存。因此,只要保存您的基础Docs对象,就应该能够避免重新嵌入您的文档。

自定义提示

您可以使用设置来自定义任何提示。

预置和后置提示

按照上述语法,您还可以包含在查询之前和之后执行的提示。例如,您可以使用它来批判答案。

5、快速入门

在这个例子中,我们从一系列研究论文 PDF 文件夹开始,神奇地获取它们的元数据——包括带有撤稿检查的引用次数,然后解析并将 PDF 缓存到全文搜索索引中,最后使用 LLM 代理回答用户的问题。

pip install paper-qa

cd my_papers

pqa ask '如何大规模制造碳纳米管?'

示例输出

问题:有人设计了使用蛋白质或 DNA 进行计算的神经网络吗?

有多个来源支持设计了使用 DNA 进行计算的神经网络这一说法。Qian、Winfree 和 Bruck 的工作展示了如何利用 DNA 链置换级联来构建神经网络组件,例如人工神经元和联想记忆,这些都基于 DNA 系统(Qian2011Neural 第 1-2 页, Qian2011Neural 第 15-16 页, Qian2011Neural 第 54-56 页)。这项研究包括实现了一个 3 位 XOR 门和一个四神经元 Hopfield 联想记忆,展示了 DNA 在神经网络计算方面的潜力。此外,将深度学习技术应用于基因组学,涉及对 DNA 序列进行计算,这一点已有充分记录。研究表明已经应用卷积神经网络(CNNs)来预测基因组特征,如转录因子结合和 DNA 可访问性(Eraslan2019Deep 第 4-5 页, Eraslan2019Deep 第 5-6 页)。这些模型利用 DNA 序列作为输入数据,实际上是在使用神经网络对 DNA 进行计算。虽然提供的摘录没有明确提到基于蛋白质的神经网络计算,但它们确实强调了神经网络在与蛋白质序列相关的任务中的应用,比如预测 DNA-蛋白质结合(Zeng2016Convolutional 第 1-2 页)。然而,主要焦点仍然是基于 DNA 的计算。

6、常见问题

为什么我的结果与你们的论文不同?

在FutureHouse内部,我们使用了一套略有不同的工具。我们正试图将其中一些工具,如引文遍历,纳入这个仓库。然而,我们拥有访问研究论文的API和许可证,这是无法公开分享的。同样,在我们的研究论文结果中,我们并不是从已知的相关PDF开始。我们的代理必须使用关键词搜索所有论文来识别它们,而不是仅搜索一个子集。我们正在逐步使这两个版本的PaperQA保持一致,但在有一个开源方式自由访问论文(即使是开源论文)之前,您需要自行提供PDF。

这与LlamaIndex或LangChain有何不同?

LangChain和LlamaIndex都是处理LLM应用程序的框架,提供了面向代理工作流和增强生成检索的抽象。

随着时间的推移,PaperQA团队选择了成为框架无关的,而是将LLM驱动程序外包给LiteLLM,并且除了Pydantic以外没有其他框架用于其工具。PaperQA专注于科学论文及其元数据。

可以使用LlamaIndex或LangChain重新实现PaperQA。例如,我们的GatherEvidence工具可以作为带有基于LLM的重排和上下文摘要的检索器重新实现。在LlamaIndex中的树响应方法也有类似的工作。

我可以保存或加载吗?

Docs类可以被序列化和反序列化。如果您想保存文档的嵌入并在以后加载它们,这是非常有用的。

PaperQA2的案例应用

持续更新中……

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1543135.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

pg入门3—详解tablespaces—下

pg默认的tablespace的location为空&#xff0c;那么如果表设置了默认的tablespace&#xff0c;数据实际上是存哪个目录的呢? 在 PostgreSQL 中&#xff0c;如果你创建了一个表并且没有显式指定表空间&#xff08;tablespace&#xff09;&#xff0c;或者表空间的 location 为…

CCRC-DSA数据安全评估师: 2030年人工智能将更为普及

近日&#xff0c;IDC发布了一份名为《人工智能对经济和就业的全球影响》的报告&#xff0c;预测到2030年&#xff0c;采用人工智能&#xff08;AI&#xff09;技术&#xff0c;以及在现有业务中应用AI和为企业及消费者提供更优质产品/服务的相关支出&#xff0c;将累计为全球经…

2024/9/22

系列文章目录 文章目录 系列文章目录前言一、两条腿走路二、编程语言能力提升1.廖雪峰的python课2.Leetcode&#xff08;数据结构题&#xff09; 三、机器学习能力提升1.统计学习方法 李航2.kaggle竞赛 四、神经网络能力提升1.神经网络与深度学习 邱锡鹏2.一套自己的万金油模板…

[sniffer]分析

注意事项 ap设置为不加密&#xff0c;sinffer可查看tcp状态 尽量先用不打印调试信息的版本&#xff0c;提高cpu 吞吐 packets Singal&#xff1a;表示信号强度 channel&#xff1a;表示信道 data rate&#xff1a;表示速率 flags&#xff1a;"#“表示ACK&#xff1b;”&…

倍增算法——AtCoder Beginner Contest 370 F

F - Cake Division 题意&#xff1a;就是说给你一个蛋糕&#xff0c;然后又n块&#xff0c;让你分成k份&#xff0c;每份蛋糕必须要相连&#xff0c;然后问你所有分的情况中&#xff0c;最小的那一份蛋糕&#xff0c;最大的质量是多少&#xff0c;然后判断&#xff0c;在每一种…

【永磁同步电机(PMSM)】 6. 矢量空间算法(SVPWM)

【永磁同步电机&#xff08;PMSM&#xff09;】 6. 矢量空间算法&#xff08;SVPWM&#xff09; 1. SVPWM 的基本原理1.1 SVPWM 的优点1.2 SVPWM 的电路拓扑1.3 连续旋转的空间矢量 2. SVPWM 的算法实现2.1 电压矢量组合方案2.2 SVPWM 的实现步骤 3. 基于 Simulink 的 SVPWM 仿…

根据一级分类Id获取专辑标签(内连接,一对多)

文章目录 base_attributebase_attribute_value 1、BaseAttribute2、BaseAttributeValue3、BaseCategoryApiController --》findAttribute()4、BaseCategoryServiceImpl --》findAttribute()5、BaseAttributeMapper6、BaseAttributeMapper.xml 当选择完专辑分类之后&#xff0c;…

【BEV 视图变换】Ray-based(2): 代码复现+画图解释 基于深度估计、bev_pool(代码一键运行)

paper&#xff1a;Lift, Splat, Shoot: Encoding Images from Arbitrary Camera Rigs by Implicitly Unprojecting to 3D code&#xff1a;https://github.com/nv-tlabs/lift-splat-shoot 一、完整复现代码(可一键运行)和效果图 import torch import torch.nn as nn import mat…

旺店通ERP集成金蝶EAS(金蝶EAS主供应链)

源系统成集云目标系统 金蝶EAS介绍 金蝶EAS是一款全球首款融合TOGAF标准SOA架构的企业管理软件&#xff0c;专门为大中型企业设计&#xff0c;以“创造无边界信息流”为产品设计理念&#xff0c;支持云计算、SOA和动态流程管理的整合技术平台。 旺店通介绍 旺店通ERP系统是一…

CORE Kestrel Web、InProcess、OutOfProcess、启动配置

Kestrel 服务 ASP.NET Core是一个跨平台框架。 这意味着它支持在不同类型的操作系统&#xff08;例如Windows&#xff0c;Linux或Mac&#xff09;上开发和运行应用程序。 Kestrel是ASP.NET Core应用程序的跨平台Web服务器。 这意味着该服务器支持ASP.NET Core支持的所有平台和…

防火墙详解(二)通过网页登录配置华为eNSP中USG6000V1防火墙

配置步骤 步骤一 打开eNSP&#xff0c;建立如下拓扑。防火墙使用&#xff1a;USG6000V1。 Cloud的作用是通过它可以连接本地的网卡&#xff0c;然后与我们的电脑进行通信。 由于防火墙USG6000V&#xff0c;不能直接开启&#xff0c;需要的导入包&#xff0c;所以需要在华为官网…

一文了解什么是大模型?到底大模型有什么用呢?

党中央、国务院面向未来准确把握时代大势&#xff0c;已于十三五期间部署推进数字中国建设&#xff0c;《国民经济和社会发展第十四个五年规划和2035年远景目标纲要》更是将“加快数字化发展&#xff0c;建设数字中国”单列成篇&#xff0c;要求“提高数字政府建设水平”&#…

数据安全评估工程师CCRC-DSA

数据安全评估工程师这一角色&#xff0c;要求从事者具备特定的条件与能力。 本文旨在阐述如何成为数据安全评估工程师&#xff0c;包括所需条件及该职业的难易程度。 一、数据安全评估工程师的角色 数据安全评估工程师专注于对企业数据的安全风险进行评估。 他们通过对数据…

Android平台Unity3D下如何同时播放多路RTMP|RTSP流?

技术背景 好多开发者&#xff0c;提到希望在Unity的Android头显终端&#xff0c;播放2路以上RTMP或RTSP流&#xff0c;在设备性能一般的情况下&#xff0c;对Unity下的RTMP|RTSP播放器提出了更高的要求。实际上&#xff0c;我们在前几年发布Unity下直播播放模块的时候&#xf…

橙子质量检测系统源码分享

橙子质量检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

数字化转型的实践指南:业务能力建模的全景应用与企业创新路径

在当今快速变化的商业环境中&#xff0c;数字化转型已成为企业持续创新和提升竞争力的关键战略。然而&#xff0c;如何有效规划、构建并管理企业的核心业务能力&#xff0c;确保企业在数字化时代能够敏捷应对市场变化&#xff0c;是许多企业面临的挑战。《业务能力指南》为这一…

如何使用ChatGPT撰写文献综述?7个步骤轻松搞定

大家好,感谢关注。我是七哥,一个在高校里不务正业,折腾学术科研AI实操的学术人。关于使用ChatGPT等AI学术科研的相关问题可以和作者七哥(yida985)交流,多多交流,相互成就,共同进步,为大家带来最酷最有效的智能AI学术科研写作攻略。 撰写文献综述对于研究人员和学生来说…

STM32F407-03

PWM PWM指的是脉冲宽度的控制,是一种利用微处理器的数字输出能力来控制模拟电路技术 PWM有两个关键参数一个是占空比 和 频率 频率指的是STM32的定时器通道的脉冲次数 占空比指的是一个周期内高电平所占的比例 PWM一般是用在工业控制领域 在这里可以看到PF9引脚和TIM14是相关…

白酒冷知识 普通人判断酒好坏这三招就够了

摩擦法&#xff1a;手心滴几滴白酒反复摩擦假酒: 发酸发臭真酒:粮食香气 兑水法&#xff1a;酒中加1/3的水 假酒: 无任何反应纯粮酒&#xff0c;会变浑浊 火烧法倒满酒用火烧假酒: 无颜色有臭味 纯粮酒:烧完浑浊酒糟香

java项目之城镇保障性住房管理系统(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的城镇保障性住房管理系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 城镇保障性住房管…