langchain:如何在本地使用自定义部署的fastAPI嵌入模型?

0 投票
1 回答
34 浏览
提问于 2025-04-12 18:02

我想在Langchain中建立一个检索器,并且想使用一个已经部署好的fastAPI嵌入模型。我该怎么做呢?

from langchain_community.vectorstores import DocArrayInMemorySearch

embeddings_model = requests.post("http://internal-server/embeddings/")

db = DocArrayInMemorySearch.from_documents(chunked_docs, embeddings_model)
retriever = db.as_retriever()

1 个回答

0

你可以创建一个自定义的嵌入类,这个类可以继承自 BaseModelEmbeddings 这两个类。下面是一个例子:

from typing import List

import requests
from langchain_core.embeddings import Embeddings
from langchain_core.pydantic_v1 import BaseModel


class APIEmbeddings(BaseModel, Embeddings):
    """Calls an API to generate embeddings."""

    def embed_documents(self, texts: List[str]) -> List[List[float]]:
        # TODO: Call API to generate embeddings
        # requests.post("http://internal-server/embeddings/")
        pass

    def embed_query(self, text: str) -> List[float]:
        # TODO: Call API to generate embeddings
        # requests.post("http://internal-server/embeddings/")
        pass

embed_documents()embed_query()Embeddings 类中的抽象方法,你必须实现它们。OllamaEmbeddings 类就是一个简单的例子,展示了如何创建一个自定义的嵌入类。

你可以像使用其他嵌入类一样使用这个自定义的嵌入类。

embeddings_model = APIEmbeddings()

db = DocArrayInMemorySearch.from_documents(chunked_docs, embeddings_model)
retriever = db.as_retriever()

参考资料

  1. 嵌入 (LangChain GitHub)
  2. Ollama (LangChain GitHub)

撰写回答