文档API 参考📓 教程🧑‍🍳 食谱🤝 集成💜 Discord🎨 Studio
文档

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"])

相关链接

请查看 GitHub 仓库或我们的文档中的 API 参考