- 博客(29)
- 收藏
- 关注
原创 Langchain搭建LLM应用程序之十二 RAG-向量数据库实现合同信息抽取
为实现非结构化数据的高效检索,关键在于将其转化为结构化的表示形式。通过对海量文档进行文本分块、向量化处理,并将其存储于专用数据库中,可将非结构化内容转换为数值化的向量表示。在进行检索时,查询内容经过相同的向量化处理,通过计算向量间的相似度,从数据库中找出与之最接近的k个向量。最终,所需的答案即蕴含于这k个向量所对应的文本块之中。当我们面临的内容不再是数据,而是知识,提出的问题也不再局限于某个字段值,而是自然语言描述的问题,传统的关键字检索局限性就太大了。切割后文档存入向量数据库。
2025-11-20 14:54:59
198
原创 Langchain搭建LLM应用程序之十一 RAG-文本切割器选型
一致性原则:你的文本分割器应该与你的嵌入模型和LLM的tokenizer保持一致。OpenAI生态 -> 用tiktokenHugging Face / Sentence Transformers 生态 -> 用质量优先原则:如果一致性不是问题(例如,你只关心内容而不调用外部API),且对语义完整性要求高,选择。实验验证:没有绝对的“最佳”。在你的测试集上,用不同的分割器生成块,设置不同的 chunk_size(如512,1024),然后比较最终的检索质量和答案生成质量。这是最可靠的判断方法。
2025-11-17 17:18:30
696
原创 Langchain搭建LLM应用程序之十 RAG-文本切割器
笔者语:切割器的选择会影响喂给大模型文档质量,不同的应用场景需要选择合适的切割器才能保证大模型高质量回答,如何选择切割器,每种切割器都适用于什么场景,请关注后续更新。接收一个字符列表,尝试基于第一个字符进行切割,如果切割后的文本块太大,则移动到下一个字符,以此类推。通过 SpaCy 切割器切割,文本块大小通过字符数量计算,是 NLTKTextSplitter 的替代方案。由 OpenAI 创建,可以用于估算使用的 token 数量,对于 OpenAI 模型,估算准确度较高。(运行代码需要外网环境下载模型)
2025-11-16 22:31:56
437
原创 Pycharm配置Docker容器Python解释器并容器内调试程序
Pycharm专业版可以配置SSH Remote连接远端服务器并在远端服务器上调试程序(搜索SSH Interpreter会有很多教程)。但如果我们想在本地电脑上通过Pycharm运行Docker容器并在Pycharm中使用debug方式启动Flask服务脚本(如start_server.py),在使用Postman请求容器内服务接口的时候,可以通过在Pycharm打断点的方式查看各个环节的状态。应该怎么实现呢?
2025-11-06 09:18:25
677
原创 Langchain搭建LLM应用程序之七 示例选择器
在实际fewshot prompt应用中,可能存在示例过长或过多的情况,从而超出大模型可以处理的字数限制。为解决这种问题,langchain在实例化FewShotPromptTemplate的时候提供了实力选择器参数。示例选择器的作用是在传递给模型示例中做选择,确保示例的数量和内容长度不超过模型的最大处理能力。这样不论示例再多,模型也能有效处理提示词。示例选择器在选择示例的时候基于一定的策略,如示例长度,示例与输入的相似度等。
2025-10-29 20:30:28
246
原创 Langchain搭建LLM应用程序之六 少样本提示词(FewShotPromptTemplate)
利用少量的样本(提示词中加入【示例】)引导模型对特定任务进行学习和执行。示例中通常需要包含问题(或任务描述)及相应的答案(解决方案)。什么时候需要少样本提示词?当想让模型复制一种难以明确描述的特定响应风格的时候。少样本提示可以改善模型的性能。
2025-10-27 23:33:38
407
原创 Langchain搭建LLM应用程序之四 记忆组件
Langchain 提供的记忆组件,用于维护应用程序的状态,允许用户根据最新的输入和输出更新应用状态,并支持使用已存储的状态调整输入内容。
2025-10-23 11:44:07
272
原创 Langchain搭建LLM应用程序之一 简介
Langchain是一个大语言模型集成框架,对于大语言模型类似于汽车之于发动机。langchain为开发者提供的工具和组件,可让开发者方便地实现大语言模型程序。
2025-10-14 00:39:18
203
原创 逐步学会动态规划之 - 0/1背包问题
理解第i个物品的状态是受之前i-1个物品状态影响的,是能够理解状态转移方程的关键,也正是因为这样设定,才会比较方便得出状态转移方程;分析重叠子问题和最优子结构,能够帮助推导和理解状态转移方程。这样的分析思路可以供其他动态规划问题参考。
2025-03-03 00:39:42
464
原创 逐步学会动态规划之-硬币找零
以上代码其实计算出了所有小于amount的面额的最小硬币数,所以存在代码冗余,可以尝试用递归的方法,只需要定义一个min_amount作为最终结果动态规划的实现思路都可以借鉴以上思路,状态转移方程是实现的关键。
2025-02-28 00:32:57
287
原创 UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xe4 in position
bytes数据(中文编码的部分)不能截取,要保持完整的字节串再decode就可以正常解码了。
2024-01-19 12:05:24
797
原创 OpenResty Macbook安装
Macbook官网推荐的安装方法是通过Homebrew,具体查看链接 https://openresty.org/cn/installation.html如果通过Homebrew安装出现问题,可以尝试以下二进制包安装方式下载二进制包 https://openresty.org/cn/download.html,下载对应版本的 .tar.gz 文件, tar -zxvf xx.tar.gz 解压缩并cd进入安装依赖 brew install pcre openssl修改配置 ./configure.
2022-03-11 15:24:43
5436
原创 归并排序理解与实例
如何从简单的排序理解归并排序两个有序数组的合并:假如给你两个已经从小到大排好序的整数数组,a1 = [1,3,5,7,9], a2 = [2,4,6,8], 使输出一个包含a1,a2所有元素的从小到大排好序的数组,当然我们视觉判断就能得出答案s = [1,2,3,4,5,6,7,8,9]合并的原理:现在稍加深入的想,这样的结果如何得到的,不难看出是依次从a1中拿一个数与从a2中拿一个比较,如果a1中的小就把a1中的数取出来,接着比较a1中下一个,再比较,如果a2中的小就把a2中的数取出来,直到a1
2022-01-25 12:20:56
473
原创 通过梳理 celery_app 与flask_app关系理解 “working outside of application context” 报错
背景flask项目中使用celery,有时遇到“working outside of application context”报错。究其原因是因为celery的实例app运行在与flask app 独立的进程空间,当在celery 任务中与flask app交互,会因为不存在flask的上下文抛出此异常解决思路在执行flask app交互的逻辑前,使用 “with app.app_context():” 手动调用flask上下文,如在使用flask_mail模块发送邮件中(以下代码仅作演示,无法运行.
2021-12-06 17:29:38
1672
原创 说透python装饰器
装饰器的执行逻辑import functoolsdef wrapper(func): print("This is wrapper") 1⃣️ @functools.wraps(func) def inner(*args,**kwargs): print("This is inner") 2⃣️ return func(*args, **kwargs) return inner@wrapperdef test(): print("This is.
2021-09-18 23:03:42
306
原创 Celery入门与Flower监控
Celery 的应用场景Web应用用户发送一个需要较长时间处理的请求;传统思想会等待请求的结果(即常见到的转圈圈);为了避免用户一直等待响应结果,在服务端可以通过异步的方式处理需要花费较长时间请求(例如调用外部服务API类似叮叮通知,邮件系统等);服务后端创建相应的任务(创建任务是很快速的过程,执行具体任务才是真正耗时的操作),并将任务ID返回(响应)给用户;在前端看来,此次请求已经成功了,但是具体邮件是不是发成功了,没有直接给出结果,如果想看状态或结果,只需要拿到返回的任务ID再发送请
2021-07-26 17:03:49
9855
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅