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))
但错误尚未修复
没有
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"))
这是嵌入
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')