File size: 1,277 Bytes
2edb151 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | from __future__ import annotations
from app.config import Settings
from app.schemas import LineItem, ReceiptExtract
from backends.base import EmbedBackend, InputType
from backends.openai_compat import apply_embed_prefix
def format_embed_input(text: str, input_type: InputType, *, enabled: bool = True) -> str:
return apply_embed_prefix(text, input_type, enabled=enabled)
def line_query_text(extract: ReceiptExtract, item: LineItem) -> str:
parts = [
extract.vendor or "",
item.sku or "",
item.description,
f"qty {item.qty}" if item.qty is not None else "",
f"amount {item.amount}" if item.amount is not None else "",
]
return " | ".join(p for p in parts if p)
def catalog_passage_text(
*,
vendor: str | None,
sku: str | None,
description: str,
size: str | None = None,
) -> str:
parts = [vendor or "", sku or "", description, size or ""]
return " | ".join(p for p in parts if p)
def vendor_query_text(vendor: str) -> str:
return vendor.strip()
def embed_texts(
backend: EmbedBackend,
texts: list[str],
*,
input_type: InputType,
settings: Settings | None = None,
) -> list[list[float]]:
del settings
return backend.embed(texts, input_type=input_type)
|