MistralTextEmbedder
此组件使用 Mistral API 和模型将字符串转换为向量。将其用于嵌入检索,将您的查询转换为嵌入。
| pipeline 中的最常见位置 | 在查询/RAG 管道中的嵌入 检索器 之前 |
| 必需的初始化变量 | "api_key": Mistral API 密钥。可以通过MISTRAL_API_KEY 环境变量设置。 |
| 强制运行变量 | “text”: 一个字符串 |
| 输出变量 | “embedding”:浮点数列表(向量) “meta”:字符串元数据字典 |
| API 参考 | Mistral |
| GitHub 链接 | https://github.com/deepset-ai/haystack-core-integrations/tree/main/integrations/mistral |
使用MistralTextEmbedder 用于嵌入简单字符串(如查询)到向量中。要嵌入文档列表,请使用 MistralDocumentEmbedder,它会用计算出的嵌入(也称为向量)来丰富文档。
概述
MistralTextEmbedder 使用 Mistral 嵌入模型将字符串转换为捕获其语义的向量。
该组件目前支持mistral-embed 嵌入模型。所有支持的模型列表可以在 Mistral 的 嵌入模型文档 中找到。
要开始将此集成与 Haystack 一起使用,请使用以下命令安装它:
pip install mistral-haystack
MistralTextEmbedder 需要 Mistral API 密钥才能工作。默认情况下,它使用 MISTRAL_API_KEY 环境变量。否则,您可以在初始化时使用 api_key:
embedder = MistralTextEmbedder(api_key=Secret.from_token("<your-api-key>"), model="mistral-embed")
用法
单独使用
传递 API 密钥。请记住,请先将MISTRAL_API_KEY 设置为环境变量,或者直接传递。
以下是独立使用该组件的方法:
from haystack_integrations.components.embedders.mistral.text_embedder import MistralTextEmbedder
embedder = MistralTextEmbedder(api_key=Secret.from_token("<your-api-key>"), model="mistral-embed")
result = embedder.run(text="How can I ise the Mistral embedding models with Haystack?")
print(result['embedding'])
# [-0.0015687942504882812, 0.052154541015625, 0.037109375...]
在 pipeline 中
以下是在文档搜索管道中使用MistralTextEmbedder 的示例。我们正在一个InMemoryDocumentStore 上构建此管道,并在其中索引两个 URL 的内容。
from haystack import Document, Pipeline
from haystack.utils import Secret
from haystack.components.builders.chat_prompt_builder import ChatPromptBuilder
from haystack.components.fetchers import LinkContentFetcher
from haystack.components.converters import HTMLToDocument
from haystack.components.retrievers.in_memory import InMemoryEmbeddingRetriever
from haystack.components.writers import DocumentWriter
from haystack.document_stores.in_memory import InMemoryDocumentStore
from haystack_integrations.components.embedders.mistral.document_embedder import MistralDocumentEmbedder
from haystack_integrations.components.embedders.mistral.text_embedder import MistralTextEmbedder
from haystack.components.generators.chat import OpenAIChatGenerator
from haystack.dataclasses import ChatMessage
# Initialize document store
document_store = InMemoryDocumentStore(embedding_similarity_function="cosine")
# Indexing components
fetcher = LinkContentFetcher()
converter = HTMLToDocument()
embedder = MistralDocumentEmbedder()
writer = DocumentWriter(document_store=document_store)
indexing = Pipeline()
indexing.add_component(name="fetcher", instance=fetcher)
indexing.add_component(name="converter", instance=converter)
indexing.add_component(name="embedder", instance=embedder)
indexing.add_component(name="writer", instance=writer)
indexing.connect("fetcher", "converter")
indexing.connect("converter", "embedder")
indexing.connect("embedder", "writer")
indexing.run(data={"fetcher": {"urls": ["https://docs.mistral.ai/self-deployment/cloudflare/",
"https://docs.mistral.ai/platform/endpoints/"]}})
# Retrieval components
text_embedder = MistralTextEmbedder()
retriever = InMemoryEmbeddingRetriever(document_store=document_store)
# Define prompt template
prompt_template = [
ChatMessage.from_system("You are a helpful assistant."),
ChatMessage.from_user(
"Given the retrieved documents, answer the question.\nDocuments:\n"
"{% for document in documents %}{{ document.content }}{% endfor %}\n"
"Question: {{ query }}\nAnswer:"
)
]
prompt_builder = ChatPromptBuilder(template=prompt_template, required_variables={"query", "documents"})
llm = OpenAIChatGenerator(model="gpt-4o-mini", api_key=Secret.from_token("<your-api-key>"))
doc_search = Pipeline()
doc_search.add_component("text_embedder", text_embedder)
doc_search.add_component("retriever", retriever)
doc_search.add_component("prompt_builder", prompt_builder)
doc_search.add_component("llm", llm)
doc_search.connect("text_embedder.embedding", "retriever.query_embedding")
doc_search.connect("retriever.documents", "prompt_builder.documents")
doc_search.connect("prompt_builder.messages", "llm.messages")
query = "How can I deploy Mistral models with Cloudflare?"
result = doc_search.run(
{
"text_embedder": {"text": query},
"retriever": {"top_k": 1},
"prompt_builder": {"query": query}
}
)
print(result["llm"]["replies"])
更新于 7 个月前
