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

LangChain-检索系统 (Retrieval)

检索系统 (Retrieval)

检索系统是LangChain的核心组件之一,它提供了从各种数据源获取相关信息的能力,是构建知识增强型应用的基础。本文档详细介绍LangChain检索系统的组件、工作原理和最佳实践。

概述

检索系统解决了大型语言模型知识有限和过时的问题,允许模型访问外部信息源。LangChain的检索框架包括以下主要组成部分:

  1. 文档加载:从各种来源加载文本数据
  2. 文档处理:分割、清理和预处理文档
  3. 嵌入和索引:将文本转换为向量并建立索引
  4. 检索:搜索并获取相关文档
  5. 上下文增强:将检索到的信息整合到模型输入中

文档加载器

LangChain提供了100多种文档加载器,用于从不同数据源获取文档。

常见文档加载器

from langchain_community.document_loaders import (TextLoader, PyPDFLoader, CSVLoader, WebBaseLoader, YouTubeLoader, DirectoryLoader, GitLoader
)# 加载文本文件
text_loader = TextLoader("path/to/document.txt")
text_docs = text_loader.load()# 加载PDF文件
pdf_loader = PyPDFLoader("path/to/document.pdf")
pdf_docs = pdf_loader.load()# 加载CSV文件
csv_loader = CSVLoader("path/to/data.csv")
csv_docs = csv_loader.load()# 加载网页内容
web_loader = WebBaseLoader(["https://www.example.com/page"])
web_docs = web_loader.load()# 加载YouTube视频
youtube_loader = YouTubeLoader.from_youtube_url("https://www.youtube.com/watch?v=example",add_video_info=True,language=["zh-cn"]
)
youtube_docs = youtube_loader.load()# 加载整个目录
dir_loader = DirectoryLoader("./documents/", glob="**/*.pdf")
dir_docs = dir_loader.load()# 加载Git仓库
git_loader = GitLoader(clone_url="https://github.com/username/repo",repo_path="./repos/example_repo",branch="main"
)
git_docs = git_loader.load()

文档结构

加载的文档通常包含以下属性:

from langchain_core.documents import Documentdoc = Document(page_content="文档内容",metadata={"source": "example.txt", "page": 1, "author": "张三"}
)

文档处理

文本分割

将长文档分割成小块,以适应模型的上下文窗口:

from langchain_text_splitters import (RecursiveCharacterTextSplitter,CharacterTextSplitter,TokenTextSplitter,SentenceTransformersTokenTextSplitter
)# 基于字符的递归分割(推荐)
text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000,  # 每块最大字符数chunk_overlap=200,  # 块之间的重叠字符数separators=["\n\n", "\n", "。", ",", " ", ""]  # 尝试优先在这些分隔符处拆分
)# 基于令牌的分割(更精确控制token数量)
token_splitter = TokenTextSplitter(chunk_size=500,  # 每块最大token数chunk_overlap=50  # 块之间的重叠token数
)# 中文分割优化(基于句子变换器的分词)
chinese_splitter = SentenceTransformersTokenTextSplitter(chunk_size=256,chunk_overlap=20
)# 分割文档
doc = text_loader.load()[0]  # 假设已经加载了文档
chunks = text_splitter.split_documents([doc])
print(f"文档被分割成{len(chunks)}个块")

嵌入与向量存储

嵌入模型

将文本转换为向量表示:

from langchain_openai import OpenAIEmbeddings
from langchain_community.embeddings import HuggingFaceEmbeddings, ModelScopeEmbeddings# OpenAI嵌入(高质量但需付费)
openai_embeddings = OpenAIEmbeddings()# 开源嵌入选项(本地或免费)
huggingface_embeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2"  # 多语言模型
)# 使用中文模型(ModelScope)
chinese_embeddings = ModelScopeEmbeddings(model_id="iic/nlp_lawbert_text-embedding-chinese_base"
)# 生成文本嵌入
text = "这是一段示例文本"
embedding = openai_embeddings.embed_query(text)

向量存储

存储和检索文档嵌入:

from langchain_community.vectorstores import FAISS, Chroma, Milvus# 准备文档
docs = text_splitter.split_documents(text_loader.load())# 使用FAISS(高效的开源向量库,适合本地使用)
faiss_db = FAISS.from_documents(docs, openai_embeddings)# 使用Chroma(开源向量数据库,支持元数据过滤)
chroma_db = Chroma.from_documents(docs, openai_embeddings,persist_directory="./chroma_db"  # 持久化存储路径
)# 保存Chroma数据库
chroma_db.persist()# 使用Milvus(分布式向量数据库,适合大规模部署)
milvus_db = Milvus.from_documents(docs,openai_embeddings,connection_args={"host": "localhost", "port": "19530"}
)

检索器

基本检索

从向量存储中检索文档:

# 将向量存储转换为检索器
retriever = chroma_db.as_retriever()# 自定义检索参数
custom_retriever = chroma_db.as_retriever(search_type="similarity",  # 相似度搜索search_kwargs={"k": 5}  # 返回前5个最相关文档
)# 执行检索
query = "人工智能的应用场景有哪些?"
relevant_docs = retriever.get_relevant_documents(query)# 显示检索结果
for i, doc in enumerate(relevant_docs):print(f"结果 {i+1}: {doc.page_content[:100]}...")print(f"来源: {doc.metadata.get('source', '未知')}\n")

检索增强生成 (RAG)

基础RAG实现

from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import RunnablePassthrough
from langchain_openai import ChatOpenAI# 创建检索链
def format_docs(docs):return "\n\n".join([doc.page_content for doc in docs])# 创建RAG提示模板
template = """请根据以下上下文回答问题。如果上下文中没有提供足够的信息,就说你不知道。上下文:
{context}问题:{question}回答:"""prompt = ChatPromptTemplate.from_template(template)# 创建RAG链
rag_chain = {"context": retriever | format_docs,"question": RunnablePassthrough()
} | prompt | ChatOpenAI(temperature=0) | StrOutputParser()# 执行RAG查询
result = rag_chain.invoke("深度学习和机器学习有什么区别?")
print(result)

高级RAG模式

对话RAG
from langchain_core.prompts import MessagesPlaceholder
from langchain_core.chat_history import BaseChatMessageHistory
from langchain_community.chat_message_histories import ChatMessageHistory# 创建带对话历史的RAG提示
conversational_rag_prompt = ChatPromptTemplate.from_messages([("system", "你是一个基于上下文的问答助手。使用提供的上下文回答用户问题。"),MessagesPlaceholder(variable_name="chat_history"),("human", "{question}"),("system", "上下文信息:\n{context}")
])# 创建对话历史
chat_history = ChatMessageHistory()# 对话RAG链
conversational_rag_chain = {"context": retriever | format_docs,"question": RunnablePassthrough(),"chat_history": lambda _: chat_history.messages
} | conversational_rag_prompt | ChatOpenAI() | StrOutputParser()

最佳实践

  1. 文档分割策略:根据文档类型选择适当的分割方法

    • 通用文本:使用RecursiveCharacterTextSplitter
    • 代码:使用专用代码分割器
    • 结构化文档:使用专用分割器如MarkdownHeaderTextSplitter
  2. 选择合适的块大小

    • 太大:检索精度低,但可能包含更完整信息
    • 太小:检索精度高,但可能缺乏上下文
    • 推荐:普通文本500-1000 tokens,技术文档300-500 tokens
  3. 中文检索优化

    • 使用专为中文优化的嵌入模型
    • 使用中文分词进行文本分割
    • 考虑检索更多文档以提高召回率
  4. 检索系统部署考虑

    • 小规模/本地测试:FAISS、Chroma
    • 中等规模/生产:Weaviate、Pinecone
    • 大规模/企业级:Milvus、Elasticsearch with vector search

总结

检索系统是LangChain中连接大语言模型与外部知识的关键组件。通过文档加载、文本处理、向量嵌入和检索,可以构建强大的知识增强型应用。RAG架构将检索系统与生成模型结合,创建了一种既有知识深度又能保持对话灵活性的AI应用框架。

后续学习

  • 模型输入输出 - 了解如何与语言模型交互
  • 链 - 学习如何将检索系统集成到复杂流程中
  • 智能体|后续更新 - 探索将检索系统与自主智能体结合

相关文章:

LangChain-检索系统 (Retrieval)

检索系统 (Retrieval) 检索系统是LangChain的核心组件之一,它提供了从各种数据源获取相关信息的能力,是构建知识增强型应用的基础。本文档详细介绍LangChain检索系统的组件、工作原理和最佳实践。 概述 检索系统解决了大型语言模型知识有限和过时的问…...

【Linux】进程概念

目录 一、进程概念 (一)什么是进程 (二)描述进程-PCB 二、fork创建进程 (一)bash概念 (二)如何创建子进程 一、进程概念 (一)什么是进程 结论&#x…...

【JavaScript】十七、事件委托(冒泡阶段的利用)

文章目录 1、事件委托2、tab栏切换案例:使用事件委托优化3、阻止元素默认行为 1、事件委托 以送快递为例,某班有20名同学,每人有一个快递,快递员可以一个个送,需要送40次,很繁琐,换个方式&…...

Android InstalldNativeService::getAppSize源码分析

InstalldNativeService::getAppSize 是 Android 系统中用于计算应用程序存储空间的核心方法,其逻辑可分为以下几个关键模块(结合代码和上下文分析): 一、基础校验与初始化 ​​1. 权限校验​​ 通过 ENFORCE_UID(AID_SYSTEM) 确…...

微信小程序跳

/** * 画布文本换行绘制 * canvasContext 画布实例 * text 要写入的文本 * x 初始x轴位置 * y 初始y轴位置 * ySpacing 换行后,每行直接的间隔 * maxWidth 此文本写入画布的最大宽度,超过此宽度就换行 * color 文本颜色 * size 文本字体大小 * align 文本…...

openlayers入门01 -- 环境配置和初始化地图

openlayers入门 openlayers开发环境配置 1.下载VSCode 官网地址:https://code.visualstudio.com/ 点击Download for Windows 2.安装汉化插件和openlayers插件 搜索chinese,下载Chinese (Simplified) (简体中文) Language Pack 更改语言并重启 搜…...

window实现多jdk共存、便捷切换

背景 如今大模型技术流行,想要跟上发展就也得学一学,比如Spring-AI等框架,但这些AI相关的框架对jdk版本都有要求,一般都要不低于17。 而在企业开发中,很多时候还使用着jdk8,如何重新安装17,则需…...

常见的 set 选项与空变量检查

在编写 Bash 脚本时,使用 set 命令中的一些选项可以帮助我们在脚本执行过程中及时捕获错误和潜在问题,避免脚本在出错时继续执行,提高脚本的可靠性和健壮性。 set -e:遇到错误就停 set -e 的作用是:一旦脚本中的某个…...

JS 创建对象方法

创建对象的三种方法 3 通过构造函数 自定义构造函数 构造函数 快速定义多个对象 自定义构造函数...

IMX6ULL2025年最新部署方案:最新的UBootLinux和Rootfs部署正点原子Alpha开发板指南

正点原子Alpha IMX6ULL开发板2025年最新部署方案:基于Ubuntu24.04平台开发,部署最新的UBoot/Linux和BusyBox Rootfs部署指南 前言 ​ 笔者实在绷不住比较旧的方案了,广义流行的方案是使用2016年发布的Uboot来引导Linux4.1.15,配…...

threeJs实现裸眼3D小狗

一、实现效果 使用threeJs实现裸眼3D小狗&#xff0c;效果如下&#xff0c;其实如果将小狗换成建模小狗&#xff0c;效果更好&#xff0c;这个是模拟了一只小狗。 二、实现代码 代码如下&#xff1a; <!DOCTYPE html> <html> <head><title>星空小狗…...

ZYNQ笔记(二):MIO 、EMIO

版本&#xff1a;Vivado2020.2&#xff08;Vitis&#xff09; 任务&#xff1a;使用GPIO MIO 和 EMIO 实现按键 KEY 控制 LED&#xff08; 两个PL端LED、两个PS端KEY&#xff09; 目录 一、MIO 、EMIO 介绍 二、硬件设计 三、软件设计 四、效果 一、MIO 、EMIO 介绍 …...

Cygwin编译安装Acise

本文记录Windows下使用Cygwin编译安装Acise的流程。 零、环境 操作系统Windows11Visual Studio CodeVisual Studio Code 1.92.0Cygwin 一、工具及依赖 1.1 Visual Studio Code 下载并安装Visual Studio Code, 同时安装以下插件&#xff0c; Task Explorer Output Colorizer …...

ubuntu22.04 安装-ODBC驱动-SQLserver

1.ISO下载 中科大 Index of /ubuntu-releases/http://mirrors.ustc.edu.cn/ubuntu-releases/ 2.VMware Workstation创建虚拟机 3.更换清华源或者中科大的源 Ubuntu 24.04更换清华源_哔哩哔哩_bilibili 中科大镜像源&#xff1a; Ubuntu - USTC Mirror Help 清华源 ubuntu | 镜…...

[数据结构]Trie字典树

GPT的介绍 &#x1f9e0; 一句话总结&#xff1a; 字典树是一种专门用来存很多字符串的“超级前缀树”&#xff0c;查找某个字符串或前缀的时候&#xff0c;特别快&#xff01; ✍️ 举个生活例子&#xff08;类比&#xff09;&#xff1a; 你想做一个词典&#xff08;Dictio…...

【网络安全】Linux 命令大全

未经许可,不得转载。 文章目录 前言正文文件管理文档编辑文件传输磁盘管理磁盘维护网络通讯系统管理系统设置备份压缩设备管理其它命令前言 在网络安全工作中,熟练掌握 Linux 系统中的常用命令对于日常运维、日志分析和安全排查等任务至关重要。 以下是常用命令的整理汇总,…...

Xcode警报“Ignoring duplicate libraries: ‘-lc++’” 警报

目录 前言 一、问题出现的原因 二、解决步骤 1. 检查构建设置中的链接器标志 2. 检查依赖中的重复库 3. 清除派生数据&#xff1a; 4. 检查冲突的 C 库 5. 更新 CocoaPods&#xff1a; 前言 有时候我们会看到Xcode警报&#xff1a;Ignoring duplicate libraries: ‘-lc…...

WebStorm中使用live-server插件

文章目录 1. 前提条件1.1 已安装Node1.1.1 淘宝的镜像1.2 安装live-server1.3 安装WebStorm2. Windows配置hosts3. WebStorm配置live-server3.1 WebStorm创建3.2 启动 live-server1. 前提条件 1.1 已安装Node Windows PowerShell 版权所有(C) Microsoft Corporation。保留所…...

Python 中使用单例模式

有这么一种场景&#xff0c;Web服务中有一个全局资源池&#xff0c;在需要使用的地方就自然而言引用该全局资源池即可&#xff0c;此时可以将该资源池以单例模式实现。随后&#xff0c;需要为某一特殊业务场景专门准备一个全局资源池&#xff0c;于是额外复制一份代码新建了一个…...

【基于LangChain的千问大模型工具调用】 Function CallingTool Calling简易示例

目录 示例代码 运行结果 功能&#xff1a;根据用户输入自动选择数学计算/天气查询工具处理 ​​"用户输入 → 意图分析 → 工具调用 → 结果返回"​​ 库名解析&#xff1a;【langchain库名解析】-CSDN博客 示例代码 # 模块1&#xff1a;依赖导入 from langc…...

银河麒麟服务器操作系统 V10 SP1 中玩转firewalld防火墙

Hey小伙伴们~&#x1f44b; 今天来聊聊怎么在银河麒麟服务器操作系统 V10 SP1 中玩转firewalld防火墙&#xff01;&#x1f6e1;️ 这个强大的工具能帮你动态管理防火墙规则&#xff0c;还支持区域概念&#xff0c;让你的网络流量控制更灵活&#xff01;&#x1f389; &#x…...

信创服务器网络更稳了!链路聚合Bonding实战

原文链接&#xff1a;信创服务器网络更稳了&#xff01;链路聚合Bonding实战 Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇信创服务器操作系统上链路聚合&#xff08;Bonding&#xff09;配置实战的文章。链路聚合可以让两块网卡协同工作&#xff0c;提高服务器网…...

沐渥科技详解氮气柜操作指南

氮气柜是一种通过持续注入高纯度氮气&#xff0c;维持柜内惰性气体环境的设备&#xff0c;用于存储半导体晶圆或其他敏感元件&#xff0c;防止氧化、吸湿和污染。氮气柜操作指南是怎样的&#xff1f;下面沐渥小编给大家介绍一下。 一、操作前准备 &#xff08;1&#xff09;安全…...

Netty之ChannelOutboundBuffer详解与实战

深入理解Netty的高低水位线机制及其应用实践 在高性能网络编程中&#xff0c;Netty作为一个广泛使用的异步事件驱动的Java框架&#xff0c;其高效的流量控制机制对于系统的稳定性和性能至关重要。本文将深入探讨Netty中的高低水位线&#xff08;High/Low Water Mark&#xff0…...

学习Python的优势体现在哪些方面?

文章目录 前言易于学习和使用应用领域广泛丰富的开源库和社区支持跨平台兼容性职业发展前景好 前言 学习 Python 具有多方面的优势&#xff0c;这使得它成为当今最受欢迎的编程语言之一&#xff0c;以下为你详细介绍。 易于学习和使用 语法简洁易懂&#xff1a;Python 的语法…...

每天五分钟玩转深度学习PyTorch:搭建LSTM算法模型完成词性标注

本文重点 本文通过LSTM算法模型来解决一个实际问题,也就是如何使用LSTM完成词性预测,下面我们搭建两个模型,一个是单词级别的,另外一个是字母级别的,大概的步骤就是,字母级别的LSTM将每个单词的字母作为输入,然后取最后一个时刻作为整个单词的表示,然后将文本中所有的…...

ANP协议深度解析:智能体网络协议的演进与革新

引言 随着人工智能&#xff08;AI&#xff09;技术的快速发展&#xff0c;多智能体系统&#xff08;Multi-Agent Systems, MAS&#xff09;逐渐成为解决复杂问题的核心范式。然而&#xff0c;智能体之间的高效协作一直面临通信标准不统一、资源分配冲突、动态环境适应能力不足等…...

如何降低论文的AIGC检测率,减少“AI味”

要降低论文的AIGC&#xff08;AI生成内容&#xff09;检测率&#xff0c;减少“AI味”&#xff0c;关键在于让论文更自然、个性化&#xff0c;并符合学术规范。以下是具体方法&#xff1a; 1. 避免直接复制AI生成内容 ❌ 错误做法&#xff1a;直接使用DeepSeek等工具生成的整段…...

安装npm install element-plus --save报错

今天安装npm install element-plus --save报的错&#xff0c;豆包提示说是项目里使用的 eslint 版本是 7.32.0&#xff0c;而 vue/eslint-config-standard9.0.1 要求的 eslint 版本是 ^9.10.0。总之就是说版本不兼容 报错&#xff1a; While resolving: vue3_project0.1.0 np…...

Python代码缩进统一规范

一、Python缩进的重要性:逻辑与可读性的桥梁 1. 语法规则的核心 Python与其他编程语言显著不同之处在于,它使用缩进来表示代码块的层次结构。不像C、Java等语言依靠大括号{}来明确函数体、循环体和条件语句的范围,Python完全依赖缩进来界定这些逻辑单元。例如,在一个if条…...

蓝桥杯基础数论入门

一.试除法 首先我们要了解&#xff0c;所有大于1的自然数都能进行质因数分解。试除法作用如下&#xff1a; ​质数判断 试除法通过验证一个数是否能被小于它的数&#xff08;一般是用2到用根号x&#xff09;整除来判断其是否为质数。根据定义&#xff0c;质数只能被1和自身整除…...

一个插件,免费使用所有顶级大模型(Deepseek,Gpt,Grok,Gemini)

DeepSider是一款集成于浏览器侧边栏的AI对话工具&#xff0c;可免费使用所有顶级大模型 包括GPT-4o&#xff0c;Grok3,Claude 3.5 Sonnet,Claude 3.7,Gemini 2.0&#xff0c;Deepseek R1满血版等 以极简交互与超快的响应速度&#xff0c;完成AI搜索、实时问答、内容创作、翻译、…...

nginx入门,部署静态资源,反向代理,负载均衡使用

Nginx在linux上部署静态资源 概念介绍 Nginx可以作为静态web服务器来部署静态资源。这里所说的静态资源是指在服务端真实存在&#xff0c;并且能够直接展示的一些文件&#xff0c;比如常见的html页面、css文件、js文件、图片、视频等资源。 相对于Tomcat&#xff0c;Nginx处理…...

微信小程序中使用ECharts 并且动态设置数据

项目下载地址 GitHub 地址 https://github.com/ecomfe/echarts-for-weixin 将当前文件夹里的内容拷贝到项目中 目录&#xff1a; json: {"usingComponents": {"ec-canvas": "../components/ec-canvas/ec-canvas"} }wxml&#xff1a; <ec…...

【愚公系列】《高效使用DeepSeek》064-跨文化谈判

🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! 👉 江湖人称"愚公搬代码",用七年如一日的精神深耕技术领域,以"…...

云原生环境Jvm内存占用持续高位问题排查

生产内存占用过高问题排查 1、问题描述 一个tomcat应用&#xff0c;部署在云原生集群上&#xff0c;云原生监控显示内存占用率持续偏高&#xff0c;最大占用率、平均占用率都在90%多&#xff0c;但是倒没有OOM什么的。 2、问题复现 凭借对此应用的了解&#xff0c;很快就在测…...

linux下io操作详细解析

在 Linux 系统下&#xff0c;IO&#xff08;输入/输出&#xff09;操作是程序与外部设备&#xff08;如文件、网络等&#xff09;交互的重要方式。Linux 提供了丰富的系统调用和库函数来支持各种 IO 操作。以下是对 Linux 下 IO 操作的详细解析&#xff0c;包括文件 IO、网络 I…...

【在校课堂笔记】Python 第 9 节课 总结

- 第 91 篇 - Date: 2025 - 04 - 10 Author: 郑龙浩/仟墨 【Python 在校课堂笔记】 文章目录 南山-第 9 节课字符串的各种操作一 string二 string 的索引1 索引介绍2 示例 - 索引使用 三 切片1 **结构**2 示例 四 回文数 – 切片的应用五 对手机号进行脱敏处理六 注意七 读取字…...

AcWing 6099. 座位

原题目链接 问题描述 有 n 头奶牛&#xff08;n ≥ 5&#xff09;&#xff0c;编号为 1 ∼ n&#xff0c;按照某种顺序围着一张圆桌坐成一圈。 奶牛之间存在如下的朋友关系&#xff1a; 如果两头奶牛相邻&#xff0c;则它们是朋友&#xff1b;如果两头奶牛之间只隔着一头奶…...

MySQL SQL Mode

SQL Mode 是 MySQL 中一个重要的系统变量&#xff0c;它决定了 MySQL 应遵循的 SQL 语法规则和数据验证规则。 什么是 SQL Mode SQL Mode 定义了 MySQL 应该支持的 SQL 语法以及执行数据验证的方式。通过设置不同的 SQL Mode&#xff0c;可以让 MySQL 在不同程度上兼容其他数据…...

linux不同用户共享同一anaconda

这里写目录标题 1、anaconda安装2、所有账号可以访问conda 按一下步骤顺序执行&#xff0c;可使linux上不同权限隔离的用户可以同时访问anaconda。 1、anaconda安装 step1&#xff1a;anaconda是通过root账号安装在某个自定义目录下&#xff08;如&#xff1a;/data/software/…...

Langflow 远程命令执行漏洞复现(CVE-2025-3248)(附脚本)

免责申明: 本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 前言…...

如何在 Excel 中处理并拆分你提供的这种混合单位的库存数据。

使用 Power Query (获取与转换数据) - 最推荐 这是处理这类复杂、不规范数据的最强大、最灵活的方法&#xff0c;尤其适合数据量大或需要重复处理的情况。 加载数据到 Power Query&#xff1a; 选中你的数据区域。 在 Excel 菜单栏点击 数据 选项卡。 在 获取和转换数据 功能…...

OpenHarmony荷兰研习会回顾 | 仓颉语言赋能原生应用开发实践

近日&#xff0c;由全球顶级学术峰会EuroSys/ASPLOS和OpenHarmony社区在荷兰鹿特丹合办的操作系统深度研习会圆满收官&#xff0c;本次研习会以"架构探秘-开发实践-创新实验"三位一体的进阶模式&#xff0c;为全球开发者构建了沉浸式技术探索平台。其中&#xff0c;由…...

广州华锐视点考试考核系统:引领智能考核新时代​

在当今数字化飞速发展的时代&#xff0c;考试考核作为教育与培训成果检验的重要环节&#xff0c;也在不断寻求创新与突破。广州华锐视点凭借其先进的技术实力&#xff0c;打造出了一套功能强大、高效便捷的考试考核系统&#xff0c;为各类教育机构、企业培训等提供了全面且优质…...

Harmony鸿蒙应用开发-录音保存并播放音频

功能介绍&#xff1a; 录音并保存为m4a格式的音频&#xff0c;然后播放该音频&#xff0c;参考文档使用AVRecorder开发音频录制功能(ArkTS)&#xff0c;更详细接口信息请查看接口文档&#xff1a;ohos.multimedia.media (媒体服务)。 知识点&#xff1a; 熟悉使用AVRecorder…...

室分系统(室内分布系统)详解

室分系统&#xff08;室内分布系统&#xff0c;Indoor Distribution System&#xff09;是用于解决建筑物内部信号弱、覆盖差、容量不足的专用通信网络&#xff0c;广泛应用于商场、写字楼、地铁、机场等场景。 1. 室分系统的作用 解决信号覆盖问题&#xff1a;消除室内盲区&am…...

基于 Qt4 的图片处理工具开发(二):增加对比度调节、界面布局优化、多线程操作

废话不多说&#xff0c;先来看一下最终的界面效果 一、引言 在上一篇博客中&#xff0c;我们完成了图片处理工具的基础框架&#xff0c;实现了拖拽加载、亮度调节和角度旋转功能。本文将聚焦界面布局重构、对比度调节功能扩展以及多线程性能优化&#xff0c;进一步提升工具的实…...

禁止页面滚动的方法-微信小程序

在微信小程序中&#xff0c;有几种方法可以禁止页面滚动&#xff1a; 一、通过页面配置禁止滚动 在页面的JSON配置文件中设置&#xff0c;此方法完全禁止页面的滚动行为&#xff1a; {"disableScroll": true }二、通过 CSS 样式禁止滚动 在页面的WXSS文件中添加&…...

基于landsat与Modis影像的遥感技术的生态环境质量评价

本次将结合ArcGIS与ENVI&#xff0c;发布 landsat与Modis影像的遥感技术的生态环境质量评价技术专题&#xff0c;专题课程学习&#xff01; 在反映生态质量的诸多自然因素中&#xff0c;绿度、湿度、热度、干度可谓是与人类生存息息相关的4个重要指标&#xff0c;也是人类直观…...