- 博客(51)
- 收藏
- 关注
原创 RAG之检索优化(三)
本文探讨了RAG系统优化中的关键问题:索引优化与科学评估。首先介绍了检索前处理技术,包括智能查询构建(Text-to-SQL转换和自查询检索器)和查询优化技巧(重写、分解、澄清和扩展)。然后详细解析了五种索引类型(FLAT、HNSW、IVF_FLAT等)的特点与适用场景,并提出层次化索引和多表示索引等优化策略。文章强调,通过合理的索引选择和优化技巧,可以显著提升RAG系统的检索效率和答案质量,使其从"能用"变为"好用"。
2026-03-02 10:50:15
835
原创 RAG之嵌入模型与向量数据库(二)
嵌入模型决定了“语义理解的精准度”,向量数据库决定了“检索的速度和效率”。嵌入模型优先匹配语言和文本长度,向量数据库优先匹配数据规模和运维能。做好这两个组件的选型和配置,RAG系统的检索性能就成功了一半。
2026-02-25 10:05:48
1028
原创 RAG之数据导入与文本分块(一)
摘要: RAG(检索增强生成)通过“先检索后生成”机制提升大模型回答的可信度,其核心流程包括数据导入、文本分块、检索匹配和生成回答。数据导入需从结构化(Excel)、非结构化(PDF/PPT)和半结构化(JSON/HTML)数据源中筛选清洗,使用LangChain等工具加载。文本分块是关键环节,需平衡语义完整性与检索效率,常用递归分块、语义分块等方法,控制块大小(500-1000字符)并添加重叠与元数据。最终通过向量化将文本转为可检索的向量,使大模型基于精准资料生成回答,避免幻觉问题。
2026-02-24 11:21:40
827
原创 GDB调试 core dump 文件与栈溢出分析
本文将介绍如何通过Core dump机制调试程序中的段错误问题。首先需在Ubuntu中启用Core dump功能(使用ulimit -c unlimited命令),并设置core文件命名格式。通过两个示例演示调试过程:第一个案例中空指针解引用导致段错误,通过gdb可定位到具体代码行;第二个案例中多次调用alloca()导致栈溢出,分析发现是栈空间不足(默认仅8MB)。调试时使用gdb命令(如bt、i locals)查看调用栈和局部变量,结合系统内存和栈空间限制分析问题根源。核心转储文件能有效保存程序崩溃时的
2025-08-11 21:06:28
1051
原创 Git客户端的创建与常用的提交、拉取、修改、推送等命令
本文介绍了如何在Windows环境下使用Git Bash连接GitHub并进行代码管理
2025-07-02 20:37:12
1406
1
原创 FFmpeg音视频同步思路
本文探讨了以音频PTS为基准进行音视频同步的优势和方法。同步策略优先保证听觉体验,利用FFmpeg获取音频帧PTS和时间基,通过SDL音频回调实现渲染控制。关键点在于计算当前音频播放位置:记录首帧PTS和渲染时间,结合时间增量换算成同步PTS。视频同步需使用解码后AVFrame的PTS而非AVPacket的PTS,因B帧、帧分割/合并等因素会导致不一致。最终通过比较视频PTS和同步PTS决定解码节奏,视频超前时等待,落后时追赶,确保平滑同步。这种方案符合人类感知特性,调整成本低,能有效避免声画不同步问题。
2025-06-26 15:42:57
1229
原创 QT之MVD的简单体现和通过便利类widget复现同样效果
这是因为 QStandardItemModel 实现了 Qt 的模型 / 视图架构中的标准接口,而这两种视图(树视图和表格视图)都能够适配这种标准模型。虽然通过QTableWidget可以绕过显式的模型操作,但它的内部仍然通过QTableWidgetItemModel实现了模型-视图的分离。在复杂场景中,模型-视图架构的灵活性、性能和可维护性优势会显著体现。同时,它也可以作为表格数据的容器,通过将数据组织成二维表格的形式(行和列),可以直接用于表格视图(QTableView)
2025-05-19 08:40:41
1149
原创 imx6ULL从应用程序到驱动程序
本文介绍了如何通过应用程序和驱动程序控制LED设备。应用程序通过open和write系统调用打开字符设备并改变LED状态。驱动程序部分,首先通过register_chrdev注册设备并绑定file_operations结构体,确保内核能够找到并调用相应的驱动函数。接着,通过platform_device描述硬件资源,并使用platform_device_register将其注册到内核。最后,通过platform_driver提供设备操作函数,并使用platform_driver_register注册驱动。整
2025-05-18 08:33:03
1054
原创 cin,cin.get(),getchar(),getline(),cin.get line()异同点
cin,cin.get(),getchar(),getline(),cin.get line()异同点
2025-04-11 22:56:13
668
原创 C++ unique_ptr、shared_ptr、weak_ptr全面解析
对make出来的智能指针和new出来的智能指针的区别做了详细介绍,同时对shared_ptr和weak_ptr之间的关系做了全面剖析
2025-03-31 21:19:15
1335
原创 音视频编码和封装格式
视频是连续的图像序列,由连续的帧构成,一帧即为一幅图像。由于人眼的视觉暂留效应,当帧序列以一定的速率播放时,我们看到的就是动作连续的视频。由于连续的帧之间相似性极高,为便于储存传输,我们需要对原始的视频进行编码压缩,以去除空间、时间维度的冗余。音频编码是一种将音频信号转换为数字形式的过程,目的是减少数据中的冗余,以便存储和传输。音频编码的实质是通过抽样、量化和编码三个步骤,将连续变化的模拟信号转换为数字编码。视频编码是将视频数据从一种格式转换为另一种格式的过程。
2025-02-25 22:29:22
1470
原创 C++ 关于虚函数的一些碎碎念
如果基类的析构函数不是虚函数那也不会报错,但是在工程上是的,方法实现了多态,否则容易出现这种类似问题实现一个基类AB1和B2继承A类场景模拟,由于构造哪个类由传参决定,所以返回的是基类此时就会出现问题,Drop函数里delete只调用了基类的析构函数,但是没有调用子类的析构函数,造成内存泄露所以为了防止这种情况产生,将基类的虚构函数设置成virtual就能调用到子类的虚构函数。
2024-12-27 16:12:46
1124
原创 超详细!手撕C++线程池!(大家圣诞节快乐呀!!)
充分利用C++新特性,通过智能指针管理线程和任务对象的生命周期,通过条件变量condition_variable来进行任务通知,以及通过promise来异步获取任务的返回
2024-12-25 22:11:11
757
原创 new和malloc、delete和free的区别
分析了五点new和malloc的区别,同时提到free是怎么知道要释放多少空间和malloc是怎么分配内存的这两点题外话
2024-12-24 17:17:47
519
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅