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

文档进行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 Chroma

filepath = '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的可以用这个,跟我对齐)
 

相关文章:

  • 数据集笔记:LTA static datasets
  • js实现pdf文件路径预览和下载
  • React Server Components:高性能React开发
  • 【2025年22期免费获取股票数据API接口】实例演示五种主流语言获取股票行情api接口之沪深A股历史成交分布数据获取实例演示及接口API说明文档
  • C#获取本机串口列表
  • 性能测试 学习基础
  • 一招解决Pytorch GPU版本安装慢的问题
  • Node.js 报错 ENOBUFS 处理方案
  • golang从入门到做牛马:第一篇-我与golang的缘分,go语言简介
  • Chain of Draft: 借鉴人类草稿思维让大型语言模型更快地思考
  • createrepo centos通过nginx搭建本地源
  • 达梦数据库如何在Linux上配置DTS工具
  • Qt:多线程
  • 基于React.js 技术栈的服务端渲染框架Next.js 实战记录
  • 【MySQL】事务|概念|如何回滚|基本特性|MySQL事务隔离性具体怎么实现的
  • 【Go学习实战】03-2-博客查询及登录
  • c++ 类的常量成员函数
  • 机器学习之强化学习
  • 更新Vim使其支持系统剪切板
  • 软件工程笔记下
  • 拼车平台网站开发/wordpress外贸独立站
  • 个人可以做b2b网站/深圳网站页面设计
  • seo网站推广策略/黑科技推广软件
  • 旅游网站改版方案/长沙关键词优化平台
  • 网站备案负责人/旺道seo
  • 彩票网站开发定制/杭州10大软件开发公司