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

问题描述 投票:0回答:1

我想在 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()
python python-requests langchain
1个回答
0
投票

您可以创建一个自定义嵌入类,该类是

BaseModel
Embeddings
类的子类。示例:

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)
© www.soinside.com 2019 - 2024. All rights reserved.