! 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
# 1. 导入所需的库 from langchain_openai import OpenAIEmbeddings # 创建 OpenAI 文本嵌入模型实例 e_model = OpenAIEmbeddings() # 将给定的文本列表嵌入到向量空间中 ebeddings = e_model.embed_documents( [ "你好", "你好啊", "你叫什么名字?", "我叫王大锤", "很高兴认识你大锤", ] ) # 打印嵌入结果 print(ebeddings)
使用了 langchain_openai 库中的 OpenAIEmbeddings 类,将文本转换为向量表示:
embedded_query = e_model.embed_query("这段对话中提到了什么名字?") embedded_query[:5]
!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())
将切分文档向量化,并存储在缓存中
# 加载文档,使用 TextLoader 从文件中加载文本内容 raw_documents = TextLoader("letter.txt").load() # 创建一个字符级别的文本分割器,用于将文档切分为固定大小的块 text_splitter = CharacterTextSplitter(chunk_size=620, chunk_overlap=0) # 使用文本分割器将原始文档切分为多个小段(chunks) documents = text_splitter.split_documents(raw_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应用开发
目前主攻降低软件复杂性设计、构建高可用系统方向。
参考: