当前位置:   article > 正文

LangChain - 文本嵌入_dashscopeembeddings

dashscopeembeddings


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


一、关于 文本嵌入模型

嵌入类是一个用于与文本嵌入模型进行交互的类。有很多嵌入模型提供商(OpenAI、Cohere、Hugging Face等)-该类旨在为所有这些提供一个标准接口。

嵌入可以创建文本的向量表示。这很有用,因为这意味着我们可以在向量空间中思考文本,并进行语义搜索,其中我们寻找在向量空间中最相似的文本片段。

LangChain中的基本嵌入类提供两种方法:一种用于嵌入文档,一种用于嵌入查询。前者以多个文本作为输入,而后者以单个文本作为输入。

之所以将它们作为两种不同的方法,是因为某些嵌入提供商对于文档(要搜索的文档)和查询(搜索查询本身)有不同的嵌入方法。


二、入门

1、设置 OpenAI

首先,我们需要安装 OpenAI Python 包:

pip install openai
  • 1

访问 API 需要一个 API 密钥,您可以通过创建一个帐户并访问 此处 来获取。

一旦我们有了密钥,我们将通过运行以下命令将其设置为环境变量:

export OPENAI_API_KEY="..."
  • 1

如果您不想设置环境变量,您可以在初始化 OpenAI LLM 类时直接通过 openai_api_key 命名参数传递密钥:

from langchain.embeddings import OpenAIEmbeddings

embeddings_model = OpenAIEmbeddings(openai_api_key="...")
  • 1
  • 2
  • 3

否则,您可以不使用任何参数进行初始化:

from langchain.embeddings import OpenAIEmbeddings

embeddings_model = OpenAIEmbeddings()
  • 1
  • 2
  • 3

2、embed_documents

Embed list of texts

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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

3、embed_query

嵌入单个查询 (Embed single query)

嵌入单个文本以便与其他嵌入的文本进行比较。

embedded_query = embedding_model.embed_query("What was the name mentioned in the conversation?")
embedded_query[:5]
  • 1
  • 2
[0.0053587136790156364,
 -0.0004999046213924885,
 0.038883671164512634,
 -0.003001077566295862,
 -0.00900818221271038]
  • 1
  • 2
  • 3
  • 4
  • 5

三、集成示例

1、DashScope

Let’s load the DashScope Embedding class.

from langchain.embeddings import DashScopeEmbeddings

embeddings = DashScopeEmbeddings(
    model="text-embedding-v1", dashscope_api_key="your-dashscope-api-key"
)

text = "This is a test document."

query_result = embeddings.embed_query(text)
print(query_result) 

doc_results = embeddings.embed_documents(["foo"])
print(doc_results)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

2、OpenAI

加载 OpenAI Embedding 类

from langchain.embeddings import OpenAIEmbeddings

embeddings = OpenAIEmbeddings()

text = "This is a test document."

query_result = embeddings.embed_query(text) 

doc_result = embeddings.embed_documents([text])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

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

from langchain.embeddings.openai import OpenAIEmbeddings

embeddings = OpenAIEmbeddings()

text = "This is a test document."

query_result = embeddings.embed_query(text)

doc_result = embeddings.embed_documents([text])

# if you are behind an explicit proxy, you can use the OPENAI_PROXY environment variable to pass through
os.environ["OPENAI_PROXY"] = "http://proxy.yourcompany.com:8080"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

3、Hugging Face Hub

Let’s load the Hugging Face Embedding class.

from langchain.embeddings import HuggingFaceEmbeddings 
embeddings = HuggingFaceEmbeddings() 
text = "This is a test document." 
query_result = embeddings.embed_query(text) 
doc_result = embeddings.embed_documents([text])
  • 1
  • 2
  • 3
  • 4
  • 5

4、Fake Embeddings

LangChain also provides a fake embedding class. You can use this to test your pipelines.

from langchain.embeddings import FakeEmbeddings 
embeddings = FakeEmbeddings(size=1352)

query_result = embeddings.embed_query("foo") 

doc_results = embeddings.embed_documents(["foo"])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2024-04-08(一)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/869708
推荐阅读
相关标签
  

闽ICP备14008679号