开放人工智能嵌入

问题描述 投票:0回答:2
import openai
from langchain.embeddings.openai import OpenAIEmbeddings

embeddings = OpenAIEmbeddings(model_name="ada")

query_result = embeddings.embed_query("Hello world")
len(query_result)

编译上述代码时出现以下错误:

> ValidationError                           Traceback (most recent call
> last) <ipython-input-60-3e1d76e373bd> in <cell line: 4>()
>       2 from langchain.embeddings.openai import OpenAIEmbeddings
>       3 
> ----> 4 embeddings = OpenAIEmbeddings(model_name="ada")
>       5 
>       6 query_result = embeddings.embed_query("Hello world")
> 
> /usr/local/lib/python3.10/dist-packages/pydantic/main.cpython-310-x86_64-linux-gnu.so
> in pydantic.main.BaseModel.__init__()
> 
> ValidationError: 1 validation error for OpenAIEmbeddings model_name  
> extra fields not permitted (type=value_error.extra)

我尝试过使用这个:-

import os
from openai_embed import OpenAIEmbeddings

os.environ["OPENAI_API_KEY"] = "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"
api_key = os.getenv("OPENAI_API_KEY")

embeddings = OpenAIEmbeddings(openai_api_key=api_key)

query_result = embeddings.embed_query("Hello world")
print(len(query_result))

但错误尚未修复

python openai-api embedding langchain
2个回答
2
投票

没有

model_name
参数。用于控制使用哪个模型的参数称为
deployment
,而不是
model_name
。此外,没有名为
ada
的模型。您可能指的是
text-embedding-ada-002
,这是 langchain 的默认模型。如果您对此感到满意,则无需指定您想要哪种型号。

这是如何使用

text-embedding-ada-002
的示例。

import os
from langchain.embeddings.openai import OpenAIEmbeddings

os.environ["OPENAI_API_KEY"] = "sk-xxxx"

embeddings = OpenAIEmbeddings()

print(embeddings.embed_query("Hello world"))

这是如何使用非默认模型的示例。

import os
from langchain.embeddings.openai import OpenAIEmbeddings

os.environ["OPENAI_API_KEY"] = "sk-xxxx"

# Use old version of Ada. You probably want V2 rather than this.
embeddings = OpenAIEmbeddings(deployment="text-similarity-ada-001")

print(embeddings.embed_query("Hello world"))

0
投票

这是嵌入

embeddings=OpenAIEmbeddings()

如果您打印

embeddings

OpenAIEmbeddings(client=<class 'openai.api_resources.embedding.Embedding'>, 
    model='text-embedding-ada-002', 
    deployment='text-embedding-ada-002', 
    openai_api_version='', 
    openai_api_base='',
    openai_api_type='', 
    openai_proxy='', 
    embedding_ctx_length=8191, 
    openai_api_key='sk-xxxxxx', 
    openai_organization='', 
    allowed_special=set(), 
    disallowed_special='all', 
    chunk_size=1000, max_retries=6, 
    request_timeout=None, headers=None, 
    tiktoken_model_name=None, 
    show_progress_bar=False, 
    model_kwargs={})

如你所见,它有

model
kwarg,其默认值为
text-embedding-ada-002
model_name
kwarg 用于
HuggingFaceEmbeddings
。这就是为什么你可能会感到困惑。如果您没有试用,
OpenAIEmbeddings
可能会花费您费用,但
HuggingFaceEmbeddings
是免费的。

from langchain.embeddings import HuggingFaceEmbeddings
# the choice of an embedding model depends on the specific NLP task
# you might need to use a different model 
embeddings=HuggingFaceEmbeddings(model_name='sentence-transformers/all-MiniLM-L6-v2')
© www.soinside.com 2019 - 2024. All rights reserved.