安装依赖:
! pip install sentence-transformers
演示如何使用 Langchain 库中的组件来处理长文本和检索相关信息。
# 导入所需的库 from langchain.chains import LLMChain, StuffDocumentsChain from langchain.document_transformers import LongContextReorder from langchain.embeddings import HuggingFaceBgeEmbeddings from langchain.vectorstores import Chroma # 使用Hugging Face托管的开源LLM来进行嵌入,这里选择MiniLM-L6-v2作为较小的LLM模型 # 向量维度为384维,支持多种语言。 embeddings = HuggingFaceBgeEmbeddings(model_name="all-MiniLM-L6-v2") # 模拟一段长文本,这里是一系列与用户兴趣相关的句子 text = [ "篮球是一项伟大的运动。", "带我飞往月球是我最喜欢的歌曲之一。", "凯尔特人队是我最喜欢的球队。", "这是一篇关于波士顿凯尔特人的文件。", "我非常喜欢去看电影。", "波士顿凯尔特人队以20分的优势赢得了比赛。", "这只是一段随机的文字。", "《艾尔登之环》是过去15年最好的游戏之一。", "L.科内特是凯尔特人队最好的球员之一。", "拉里.伯德是一位标志性的NBA球员。" ] # 使用Chroma从文本和嵌入中创建一个检索器,并设置搜索参数为返回前10个最相关的文档 retrieval = Chroma.from_texts(text, embeddings).as_retriever( search_kwargs={"k": 10} ) # 定义查询语句 query = "关于我的喜好都知道什么?" # 根据相关性从检索器中获取相关文档 docs = retrieval.get_relevant_documents(query) # 打印结果 docs
都是基于 Hugging Face Transformers 库的嵌入类,用于将文本转换为向量表示。它们之间的主要区别在于使用的预训练模型和数据集不同。
HuggingFaceEmbeddings 是基于 BERT(Bidirectional Encoder Representations from Transformers)模型的嵌入类,它使用了英文预训练模型。BERT 是一种基于 Transformer 结构的深度学习模型,通过在大规模语料库上进行预训练,学习到了丰富的语言表示能力。HuggingFaceEmbeddings 支持多种语言,包括中文,但默认情况下使用的是英文预训练模型。
HuggingFaceBgeEmbeddings 是针对中文场景特别优化的嵌入类,它使用了中文预训练模型。这些模型在大量的中文文本数据上进行预训练,能够更好地捕捉中文的语言特征和语义信息。HuggingFaceBgeEmbeddings 只支持中文,不支持其他语言。
因此,如需要处理英文文本,可以选择使用 HuggingFaceEmbeddings。如果您需要处理中文文本,建议使用 HuggingFaceBgeEmbeddings。
关注我,紧跟本系列专栏文章,咱们下篇再续!
作者简介:魔都架构师,多家大厂后端一线研发经验,在分布式系统设计、数据平台架构和AI应用开发等领域都有丰富实践经验。
各大技术社区头部专家博主。具有丰富的引领团队经验,深厚业务架构和解决方案的积累。
负责:
- 中央/分销预订系统性能优化
- 活动&券等营销中台建设
- 交易平台及数据中台等架构和开发设计
- 车联网核心平台-物联网连接平台、大数据平台架构设计及优化
- LLM应用开发
目前主攻降低软件复杂性设计、构建高可用系统方向。
参考: