文档进行embedding,Faiss向量检索
这里采用Langchain的HuggingFaceEmbeddings
参照博主,改了一些东西,因为Langchain0.3在0.2的基础上进行了一定的修改
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_huggingface import HuggingFaceEmbeddings
from langchain_community.document_loaders import TextLoader
from langchain_community.vectorstores import FAISS
from langchain_community.vectorstores import Chromafilepath = 'files/txt/res.txt'
raw_documents = TextLoader(filepath, encoding='utf8').load()# 按行分割块
text_splitter = RecursiveCharacterTextSplitter(chunk_size=100,chunk_overlap=20,separators=[ # 分隔符字符串数组"\n\n","\n"," ",# 因为这里是中文文档,加上这个会影响小数点".",",","\u200B", # Zero-width space"\uff0c", # Fullwidth comma"\u3001", # Ideographic comma"\uff0e", # Fullwidth full stop"\u3002", # Ideographic full stop""],length_function=len,is_separator_regex=True,
)
documents = text_splitter.split_documents(raw_documents)
print(len(documents))# 词嵌入模型
EMBEDDING_DEVICE = "cpu"# 加载本地 embedding 模型
embedding = HuggingFaceEmbeddings(model_name='m3e-base', model_kwargs={'device': EMBEDDING_DEVICE})
# 创建向量数据库
db = FAISS.from_documents(documents, embedding)
# 保存
db.save_local("./faiss_index")
'''
如果已经创建好了,可以直接读取
db = FAISS.load_local("./faiss_index", embeddings)
'''# 直接传入文本
query = "嘻嘻嘻嘻嘻嘻嘻嘻嘻"
docs = db.similarity_search(query, k=3)
# docs = db.similarity_search_with_score(query, k=3) # 带分数的
print(docs[0].page_content)print("分割线~~~~~~~~~~~~~~~~~~··")
# 传入向量去搜索
embedding_vector = embedding.embed_query(query)
docs = db.similarity_search_by_vector(embedding_vector, k=3)
print(docs[0].page_content)
接下来是运行所需的pip ,我这里Embedding_model选的cpu,因为还没配cuda,且这个规模的文档,笔记本cpu也支持。
首先,git自己需要的Embedding模型,我这里用的比较熟悉的m3e-base,采用了魔搭的镜像
m3e-base: git clone https://www.modelscope.cn/Jerry0/m3e-base.git
pip install sentence_transformers
pip install -U langchain-huggingface #因为langchain升级引起的更新
conda install -c pytorch faiss-cpu #这里有个坑,用这个命令解决的(同样用CPU的可以用这个,跟我对齐)
相关文章:
文档进行embedding,Faiss向量检索
这里采用Langchain的HuggingFaceEmbeddings 参照博主,改了一些东西,因为Langchain0.3在0.2的基础上进行了一定的修改 from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain_huggingface import HuggingFaceEmbeddings …...
一周学会Flask3 Python Web开发-在模板中渲染WTForms表单视图函数里获取表单数据
锋哥原创的Flask3 Python Web开发 Flask3视频教程: 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 为了能够在模板中渲染表单,我们需要把表单类实例传入模板。首先在视图函数里实例化表单类LoginForm,然…...
Android AudioFlinger(五)—— 揭开AudioMixer面纱
前言: 在 Android 音频系统中,AudioMixer 是音频框架中一个关键的组件,用于处理多路音频流的混音操作。它主要存在于音频回放路径中,是 AudioFlinger 服务的一部分。 上一节我们讲threadloop的时候,提到了一个函数pr…...
分类学习(加入半监督学习)
#随机种子固定,随机结果也固定 def seed_everything(seed):torch.manual_seed(seed)torch.cuda.manual_seed(seed)torch.cuda.manual_seed_all(seed)torch.backends.cudnn.benchmark Falsetorch.backends.cudnn.deterministic Truerandom.seed(seed)np.random.see…...
Serilog: 强大的 .NET 日志库
Serilog 是一个功能强大的日志记录库,专为 .NET 平台设计。它提供了丰富的 API 和可插拔的输出器及格式化器,使得开发者能够轻松定制和扩展日志记录功能。在本文中,我们将探索 Serilog 的基础知识、API 使用、配置和一些常见的示例。 1. 日志…...
Matlab——添加坐标轴虚线网格的方法
第一步:在显示绘制图的窗口,点击左上角 “编辑”,然后选“坐标区属性” 第二步:点 “网格”,可以看到添加网格的方框了...
π0及π0_fast的源码解析——一个模型控制7种机械臂:对开源VLA sota之π0源码的全面分析,含我司微调π0的部分实践
前言 ChatGPT出来后的两年多,也是我疯狂写博的两年多(年初deepseek更引爆了下),比如从创业起步时的15年到后来22年之间 每年2-6篇的,干到了23年30篇、24年65篇、25年前两月18篇,成了我在大模型和具身的原始技术积累 如今一转眼已…...
TCP7680端口是什么服务
WAF上看到有好多tcp7680端口的访问信息 于是上网搜索了一下,确认TCP7680端口是Windows系统更新“传递优化”功能的服务端口,个人理解应该是Windows利用这个TCP7680端口,直接从内网已经具备更新包的主机上共享下载该升级包,无需从微…...
服务器python项目部署
角色:root, 其他用户应该也可以 1. 安装python3环境 #如果是新机器,尽量执行,避免未知报错 yum -y update python -v yum install python3 python3 -v2. 使用virtualenvwrapper 创建虚拟环境,并使用workon切换不同的虚拟环境 # 安装virtua…...
Hive-优化(语法优化篇)
列裁剪与分区裁剪 在生产环境中,会面临列很多或者数据量很大时,如果使用select * 或者不指定分区进行全列或者全表扫描时效率很低。Hive在读取数据时,可以只读取查询中所需要的列,忽视其他的列,这样做可以节省读取开销…...
C语言100天练习题【记录本】
C语言经典100题(手把手 编程) 可以在哔哩哔哩找到(url:C语言经典100题(手把手 编程)_哔哩哔哩_bilibili) 已解决的天数:一,二,五,六,八…...
记录排查服务器CPU负载过高
1.top 命令查看cpu占比过高的进程id 这里是 6 2. 查看进程中占用CPU过高的线程 id 这里是9 top -H -p 6 ps -mp 6 -o THREAD,tid,time 使用jstack 工具 产看进程的日志 需要线程id转换成16进制 jstack 6 | grep “0x9” 4.jstack 6 可以看进程的详细日志 查看日志发现是 垃圾回…...
Spring Boot 项目中 Redis 常见问题及解决方案
目录 缓存穿透缓存雪崩缓存击穿Redis 连接池耗尽Redis 序列化问题总结 1. 缓存穿透 问题描述 缓存穿透是指查询一个不存在的数据,由于缓存中没有该数据,请求会直接打到数据库上,导致数据库压力过大。 解决方案 缓存空值:即使…...
基于Spring Boot的校园失物招领系统的设计与实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
10 【HarmonyOS NEXT】 仿uv-ui组件开发之Avatar头像组件开发教程(一)
温馨提示:本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦! 目录 第一篇:Avatar 组件基础概念与设计1. 组件概述2. 接口设计2.1 形状类型定义2.2 尺寸类型定义2.3 组件属性接口 3. 设计原则4. 使用…...
OpenHarmony 5.0.0 Release
OpenHarmony 5.0.0 Release 版本概述 OpenHarmony 5.0.0 Release版本标准系统能力持续完善。相比OpenHarmony 5.0 Beta1,Release版本做出了如下特性新增或增强: 应用框架新增更多生命周期管理能力、提供子进程相关能力,可以对应用运行时的…...
RSA的理解运用与Pycharm组装Cryptodome库
1、RSA的来源 RSA通常指基于RSA算法的密码系统,令我没想到的是,其名字的来源竟然不是某个含有特别意义的单词缩写而成(比如PHP:Hypertext Preprocessor(超文本预处理器)),而是由1977年提出该算法的三个歪果…...
Android 多用户相关
Android 多用户相关 本文主要记录下android 多用户相关的adb 命令操作. 1: 获取用户列表 命令: adb shell pm list users 输出如下: Users:UserInfo{0:机主:c13} running默认只有一个用户, id为0 ,用户状态为运行 2: 创建新用户 命令: adb shell …...
第三课:异步编程核心:Callback、Promise与Async/Await
Node.js 是一个基于事件驱动的非阻塞 I/O 模型,这使得它非常适合处理高并发的网络请求。在 Node.js 中,异步编程是一项非常重要的技能。理解和掌握异步编程的不同方式不仅能提高代码的效率,还能让你更好地应对复杂的开发任务。本文将深入探讨…...
红果短剧安卓+IOS双端源码,专业短剧开发公司
给大家拆解一下红果短剧/河马短剧,这种看光解锁视频,可以挣金币的短剧APP。给大家分享一个相似的短剧APP源码,这个系统已接入穿山甲广告、百度广告、快手广告、腾讯广告等,类似红果短剧的玩法,可以看剧赚钱,…...
个人开发者如何借助 Taotoken 低成本体验顶级大模型
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 个人开发者如何借助 Taotoken 低成本体验顶级大模型 对于个人开发者或学生而言,直接接入和使用各家顶尖大模型 API 往往…...
LangChain-Rust:用系统级语言重构大语言模型应用框架
1. 项目概述:当LangChain遇上Rust,会擦出怎样的火花?如果你和我一样,既是LangChain生态的深度用户,又对Rust语言的高性能与安全性念念不忘,那么看到“Abraxas-365/langchain-rust”这个项目标题时ÿ…...
基于Web的Ollama客户端:本地大模型交互的图形化解决方案
1. 项目概述:一个与本地大模型交互的现代客户端 如果你最近在本地部署了像 Llama 3、Mistral 或 Qwen 这类开源大语言模型,大概率会接触到 Ollama 这个工具。它让模型的下载、运行和管理变得异常简单,一条 ollama run llama3 命令就能开启对…...
开源项目脚手架工具:从零到一快速构建标准化项目
1. 项目概述:当开源遇上“锻造”在开源的世界里,我们常常面临一个看似简单实则棘手的问题:如何将一个灵光一现的想法,或者一个内部使用的工具,快速、规范地“锻造”成一个真正意义上的开源项目?这不仅仅是把…...
问卷星 vs 腾讯问卷 vs 金数据:2026主流问卷工具AI开放能力最新横评
作为问卷调研行业的深度观察者,老N近期注意到调研工具链正在发生一场静悄悄的革命。最近,问卷星正式上线了AI工具包(wjx-ai-kit),其CLI(命令行工具)支持多达67个子命令,并适配了Clau…...
告别硬编码!用LVGL Keyboard控件5分钟搞定嵌入式设备的输入法界面
嵌入式UI革命:5分钟用LVGL Keyboard控件打造专业输入界面 在智能家居控制面板上输入Wi-Fi密码时,你是否厌倦了反复调试按钮坐标?为工业HMI设备设计参数输入界面时,是否受够了每次修改布局都要重写事件处理逻辑?传统嵌入…...
从一次安全扫描报告说起:聊聊SSH Banner泄露那些事儿,以及比修改Banner更重要的安全习惯
从SSH版本泄露看现代安全防御:工程师的深度实践指南 那天下午,我正在整理新部署的云服务器集群的安全扫描报告,一个看似"古老"的漏洞引起了我的注意——CVE-1999-0634,SSH版本信息可被获取。这个诞生于上世纪的安全问题…...
在Windows上安装安卓应用的终极指南:APK安装器完整使用教程
在Windows上安装安卓应用的终极指南:APK安装器完整使用教程 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 想要在Windows电脑上直接运行安卓应用吗&#x…...
别再只做静态分析了!用DPABI探索小鼠大脑rs-fMRI的动态功能连接(含Matlab代码片段)
动态功能连接分析:解锁小鼠大脑rs-fMRI的时变奥秘 在神经影像研究领域,静息态功能磁共振成像(rs-fMRI)已成为探索大脑功能组织的强大工具。传统静态分析方法虽然提供了宝贵的基础认知,但大脑本质上是一个动态系统,其功能连接会随时…...
TC12.0 BMIDE实战:从零构建企业专属业务数据模型
1. 为什么企业需要定制业务数据模型 第一次接触Teamcenter的BMIDE工具时,我和很多技术管理员一样有个疑问:既然系统已经内置了标准数据模型,为什么还要大费周章地自定义?直到参与了一个汽车零部件企业的项目才真正明白。这家企业使…...
