开启左侧

LangChain - 文本嵌入

[复制链接]
义者艺也2 发表于 8 小时前 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
作者:E的工程笔记
文章目录


      一、关于 文本嵌入模型二、入门
        1、设置 OpenAI2、`embed_documents`3、`embed_query`
      三、集成示例
        1、DashScope2、OpenAI3、Hugging Face Hub4、Fake Embeddings




本文转载改编自:
https://python.langchain.com.cn/docs/modules/data_connection/text_embedding/

一、关于 文本嵌入模型

嵌入类是一个用于与文本嵌入模型进行交互的类。有很多嵌入模型提供商(OpenAI、Cohere、Hugging Face等)-该类旨在为所有这些提供一个标准接口。
嵌入可以创建文本的向量表示。这很有用,因为这意味着我们可以在向量空间中思考文本,并进行语义搜索,其中我们寻找在向量空间中最相似的文本片段。
LangChain中的基本嵌入类提供两种方法:一种用于嵌入文档,一种用于嵌入查询。前者以多个文本作为输入,而后者以单个文本作为输入。
之所以将它们作为两种不同的方法,是因为某些嵌入提供商对于文档(要搜索的文档)和查询(搜索查询本身)有不同的嵌入方法。

二、入门

1、设置 OpenAI

首先,我们需要安装 OpenAI Python 包:
  1. pip install openai
复制代码

访问 API 需要一个 API 密钥,您可以通过创建一个帐户并访问 此处 来获取。
一旦我们有了密钥,我们将通过运行以下命令将其设置为环境变量:
  1. exportOPENAI_API_KEY="..."
复制代码

如果您不想设置环境变量,您可以在初始化 OpenAI LLM 类时直接通过 openai_api_key 命名参数传递密钥:
  1. from langchain.embeddings import OpenAIEmbeddings
  2. embeddings_model = OpenAIEmbeddings(openai_api_key="...")
复制代码

否则,您可以不使用任何参数进行初始化:
  1. from langchain.embeddings import OpenAIEmbeddings
  2. embeddings_model = OpenAIEmbeddings()
复制代码

2、embed_documents

Embed list of texts
  1. embeddings = embedding_model.embed_documents(["Hi there!","Oh, hello!","What's your name?","My friends call me World","Hello World!"])len(embeddings),len(embeddings[0])# (5, 1536)
复制代码

3、embed_query

嵌入单个查询 (Embed single query)
嵌入单个文本以便与其他嵌入的文本进行比较。
  1. embedded_query = embedding_model.embed_query("What was the name mentioned in the conversation?")
  2. embedded_query[:5]
复制代码
  1. [0.0053587136790156364,
  2. -0.0004999046213924885,
  3. 0.038883671164512634,
  4. -0.003001077566295862,
  5. -0.00900818221271038]
复制代码

三、集成示例

1、DashScope

Let’s load the DashScope Embedding class.
  1. from langchain.embeddings import DashScopeEmbeddings
  2. embeddings = DashScopeEmbeddings(
  3.     model="text-embedding-v1", dashscope_api_key="your-dashscope-api-key")
  4. text ="This is a test document."
  5. query_result = embeddings.embed_query(text)print(query_result)
  6. doc_results = embeddings.embed_documents(["foo"])print(doc_results)
复制代码

2、OpenAI

加载 OpenAI Embedding 类
  1. from langchain.embeddings import OpenAIEmbeddings
  2. embeddings = OpenAIEmbeddings()
  3. text ="This is a test document."
  4. query_result = embeddings.embed_query(text)
  5. doc_result = embeddings.embed_documents([text])
复制代码
Let’s load the OpenAI Embedding class with first generation models (e.g. text-search-ada-doc-001/text-search-ada-query-001).
Note: These are not recommended models - see here
  1. from langchain.embeddings.openai import OpenAIEmbeddings
  2. embeddings = OpenAIEmbeddings()
  3. text ="This is a test document."
  4. query_result = embeddings.embed_query(text)
  5. doc_result = embeddings.embed_documents([text])# if you are behind an explicit proxy, you can use the OPENAI_PROXY environment variable to pass through
  6. os.environ["OPENAI_PROXY"]="http://proxy.yourcompany.com:8080"
复制代码

3、Hugging Face Hub

Let’s load the Hugging Face Embedding class.
  1. from langchain.embeddings import HuggingFaceEmbeddings
  2. embeddings = HuggingFaceEmbeddings()
  3. text ="This is a test document."
  4. query_result = embeddings.embed_query(text)
  5. doc_result = embeddings.embed_documents([text])
复制代码

4、Fake Embeddings

LangChain also provides a fake embedding class. You can use this to test your pipelines.
  1. from langchain.embeddings import FakeEmbeddings
  2. embeddings = FakeEmbeddings(size=1352)
  3. query_result = embeddings.embed_query("foo")
  4. doc_results = embeddings.embed_documents(["foo"])
复制代码

2024-04-08(一)




原文地址:https://blog.csdn.net/lovechris00/article/details/137517875
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题
阅读排行更多+

Powered by Discuz! X3.4© 2001-2013 Discuz Team.( 京ICP备17022993号-3 )