我想在 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()
您可以创建一个自定义嵌入类,该类是
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()
参考文献