AI大模型企业应用实战(14)-langchain的Embedding

2024-06-24 00:04

本文主要是介绍AI大模型企业应用实战(14)-langchain的Embedding,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 安装依赖

! pip install --upgrade langchain
! pip install --upgrade openai==0.27.8
! pip install -U langchain-openai
! pip show openai
! pip show langchain
! pip show langchain-openai

2 Embed_documents

# 1. 导入所需的库
from langchain_openai import OpenAIEmbeddings# 创建 OpenAI 文本嵌入模型实例
e_model = OpenAIEmbeddings()# 将给定的文本列表嵌入到向量空间中
ebeddings = e_model.embed_documents(["你好","你好啊","你叫什么名字?","我叫王大锤","很高兴认识你大锤",]
)# 打印嵌入结果
print(ebeddings)

使用了 langchain_openai 库中的 OpenAIEmbeddings 类,将文本转换为向量表示:

  1. 导入所需的库
  2. 创建一个 OpenAIEmbeddings 实例,用于将文本转换为向量表示
  3. 定义一个包含五个中文句子的列表
  4. 使用 embed_documents 方法将给定的文本列表嵌入到向量空间中,并将结果存储在 ebeddings 变量中
  5. 打印嵌入结果

3 embed_query

embedded_query = e_model.embed_query("这段对话中提到了什么名字?")
embedded_query[:5]

4 嵌入向量缓存

!pip install -U langchain-community
# 导入所需的库
from langchain.embeddings import CacheBackedEmbeddings
from langchain.storage import LocalFileStore
from langchain.document_loaders import TextLoader
from langchain.text_splitter import CharacterTextSplitter
from langchain_openai import OpenAIEmbeddings# 初始化 OpenAI 的嵌入模型
u_embeddings = OpenAIEmbeddings()# 创建一个本地文件存储对象,用于缓存嵌入向量
fs = LocalFileStore("./cache/")# 从字节存储中创建一个缓存嵌入对象
cached_embeddings = CacheBackedEmbeddings.from_bytes_store(u_embeddings,fs,namespace=u_embeddings.model,
)# 列出缓存文件存储中的所有键
list(fs.yield_keys())

5 加载文档,切分文档

将切分文档向量化,并存储在缓存中

# 加载文档,使用 TextLoader 从文件中加载文本内容
raw_documents = TextLoader("letter.txt").load()# 创建一个字符级别的文本分割器,用于将文档切分为固定大小的块
text_splitter = CharacterTextSplitter(chunk_size=620, chunk_overlap=0)# 使用文本分割器将原始文档切分为多个小段(chunks)
documents = text_splitter.split_documents(raw_documents)
  1. 使用 TextLoader 类从文件中加载了名为 "letter.txt" 的文档
  2. 然后,创建了一个 CharacterTextSplitter 对象,该对象用于将文档切分为固定大小的块(chunk),这里设置为每个块包含 620 个字符,且相邻块之间没有重叠
  3. 最后,使用 split_documents 方法将原始文档切分为多个小段,并将结果存储在 documents 列表中
! pip install faiss-cup
from langchain.vectorstores import  FAISS
%timeit -r  1 -n 1 db= FAISS.from_documents(documents,cached_embeddings)
#查看缓存中的键
list(fs.yield_keys())

关注我,紧跟本系列专栏文章,咱们下篇再续!

作者简介:魔都架构师,多家大厂后端一线研发经验,在分布式系统设计、数据平台架构和AI应用开发等领域都有丰富实践经验。

各大技术社区头部专家博主。具有丰富的引领团队经验,深厚业务架构和解决方案的积累。

负责:

  • 中央/分销预订系统性能优化

  • 活动&券等营销中台建设

  • 交易平台及数据中台等架构和开发设计

  • 车联网核心平台-物联网连接平台、大数据平台架构设计及优化

  • LLM应用开发

    目前主攻降低软件复杂性设计、构建高可用系统方向。

参考:

  • 编程严选网

    本文由博客一文多发平台 OpenWrite 发布!

这篇关于AI大模型企业应用实战(14)-langchain的Embedding的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1088654

相关文章

Python列表去重的4种核心方法与实战指南详解

《Python列表去重的4种核心方法与实战指南详解》在Python开发中,处理列表数据时经常需要去除重复元素,本文将详细介绍4种最实用的列表去重方法,有需要的小伙伴可以根据自己的需要进行选择... 目录方法1:集合(set)去重法(最快速)方法2:顺序遍历法(保持顺序)方法3:副本删除法(原地修改)方法4:

在Spring Boot中浅尝内存泄漏的实战记录

《在SpringBoot中浅尝内存泄漏的实战记录》本文给大家分享在SpringBoot中浅尝内存泄漏的实战记录,结合实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录使用静态集合持有对象引用,阻止GC回收关键点:可执行代码:验证:1,运行程序(启动时添加JVM参数限制堆大小):2,访问 htt

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Pandas使用SQLite3实战

《Pandas使用SQLite3实战》本文主要介绍了Pandas使用SQLite3实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1 环境准备2 从 SQLite3VlfrWQzgt 读取数据到 DataFrame基础用法:读

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Python实战之屏幕录制功能的实现

《Python实战之屏幕录制功能的实现》屏幕录制,即屏幕捕获,是指将计算机屏幕上的活动记录下来,生成视频文件,本文主要为大家介绍了如何使用Python实现这一功能,希望对大家有所帮助... 目录屏幕录制原理图像捕获音频捕获编码压缩输出保存完整的屏幕录制工具高级功能实时预览增加水印多平台支持屏幕录制原理屏幕

Spring AI ectorStore的使用流程

《SpringAIectorStore的使用流程》SpringAI中的VectorStore是一种用于存储和检索高维向量数据的数据库或存储解决方案,它在AI应用中发挥着至关重要的作用,本文给大家介... 目录一、VectorStore的基本概念二、VectorStore的核心接口三、VectorStore的