1. OpenAIEmbeddings
vs. ChatOpenAI
组件 | 作用 | 输入 | 输出 | 主要用途 |
---|---|---|---|---|
OpenAIEmbeddings | 生成文本的向量表示(embedding) | 文本字符串 | 数字向量(list of floats) | 用于向量搜索、RAG、语义搜索 |
ChatOpenAI / init_chat_model | 基于 OpenAI LLM 进行文本生成 | 问题或 Prompt | 生成的文本(字符串) | 问答、聊天机器人、文本摘要、代码生成 |
from langchain_openai import OpenAIEmbeddings
embeddings = OpenAIEmbeddings(model="text-embedding-3-large")
这里的 text-embedding-3-large
是 OpenAI 最新的嵌入模型,生成高维度的文本向量
以下例子把文本转成1536个维度的向量
text = "LangChain is a powerful framework for LLM applications."
vector = embeddings.embed_query(text)
print(len(vector)) # 输出:1536(text-embedding-3-large 的默认维度)
langchain官方示例代码中使用OpenAIEmbeddings,阿里云提供的接口不支持 OpenAIEmbeddings,需要换成 DashScopeEmbeddings (注意,这个有180天免费额度,超出也是要收费的)
from langchain_openai import OpenAIEmbeddings
更换后:
from langchain_community.embeddings import DashScopeEmbeddings
from langchain_core.vectorstores import InMemoryVectorStore
from dotenv import load_dotenv
load_dotenv()
embeddings = DashScopeEmbeddings() # 阿里云提供的deepseek不支持OpenAIEmbeddings,需用DashScopeEmbeddings替代
text_input = 'The clothes are of good quality and look good, definitely worth the wait. I love them.'
embedding = embeddings.embed_query(text_input)
vector_store = InMemoryVectorStore(embeddings)