Port docs-mcp-template upgrades (eval, citations, chunking, prefixes) (#16)
Co-authored-by: claude <[email protected]>
This commit was merged in pull request #16.
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
"""Prefix helpers — no Ollama, no Chroma."""
|
||||
from __future__ import annotations
|
||||
|
||||
import unittest
|
||||
|
||||
from rag.embeddings import apply_prefix, embed_texts
|
||||
|
||||
|
||||
class FakeEmbedder:
|
||||
def __init__(self) -> None:
|
||||
self.seen: list[str] = []
|
||||
|
||||
def __call__(self, texts: list[str]) -> list[list[float]]:
|
||||
self.seen.extend(texts)
|
||||
return [[0.0, 1.0] for _ in texts]
|
||||
|
||||
|
||||
class PrefixTests(unittest.TestCase):
|
||||
def test_index_sends_doc_prefix_keeps_raw_text(self) -> None:
|
||||
fake = FakeEmbedder()
|
||||
raw = ["hello"]
|
||||
vecs = embed_texts(raw, prefix="search_document: ", ef=fake)
|
||||
self.assertEqual(fake.seen, ["search_document: hello"])
|
||||
self.assertEqual(raw, ["hello"]) # caller storage unchanged
|
||||
self.assertEqual(len(vecs), 1)
|
||||
|
||||
def test_query_sends_query_prefix(self) -> None:
|
||||
fake = FakeEmbedder()
|
||||
embed_texts(["q"], prefix="search_query: ", ef=fake)
|
||||
self.assertEqual(fake.seen, ["search_query: q"])
|
||||
self.assertNotIn("q", fake.seen)
|
||||
|
||||
def test_empty_prefix_is_raw(self) -> None:
|
||||
self.assertEqual(apply_prefix("hello", ""), "hello")
|
||||
fake = FakeEmbedder()
|
||||
embed_texts(["hello"], prefix="", ef=fake)
|
||||
self.assertEqual(fake.seen, ["hello"])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user