25 lines
540 B
Python
25 lines
540 B
Python
"""RAG Interfaces."""
|
|
|
|
from typing import Protocol, runtime_checkable
|
|
|
|
|
|
@runtime_checkable
|
|
class RAGObject(Protocol):
|
|
"""Support rag add object."""
|
|
|
|
def rag_key(self) -> str:
|
|
"""For rag search."""
|
|
|
|
def model_dump_json(self) -> str:
|
|
"""For rag persist.
|
|
|
|
Pydantic Model don't need to implement this, as there is a built-in function named model_dump_json.
|
|
"""
|
|
|
|
|
|
@runtime_checkable
|
|
class NoEmbedding(Protocol):
|
|
"""Some retriever does not require embeddings, e.g. BM25"""
|
|
|
|
_no_embedding: bool
|