delcenjo's picture
Upload folder using huggingface_hub
b02371b verified
Raw
History Blame Contribute Delete
1.22 kB
from .config import TOP_K
from .retriever import Retriever
EVAL_SET = [
{"question": "How much does the Pro plan cost?", "source": "pricing.md"},
{"question": "What encryption is used for data at rest?", "source": "security.md"},
{"question": "What is the API rate limit on the Free plan?", "source": "api.md"},
{"question": "How can I export my notes?", "source": "faq.md"},
{"question": "Does Nimbus Notes work offline?", "source": "faq.md"},
{"question": "Which platforms are supported?", "source": "overview.md"},
{"question": "How do I cancel my subscription?", "source": "pricing.md"},
{"question": "Is Nimbus Notes SOC 2 compliant?", "source": "security.md"},
]
def main():
retriever = Retriever()
hits = 0
for item in EVAL_SET:
results = retriever.retrieve(item["question"], TOP_K)
sources = [chunk["source"] for chunk, _ in results]
hit = item["source"] in sources
hits += hit
print(f"[{'ok ' if hit else 'MISS'}] {item['question']} -> {sources}")
recall = hits / len(EVAL_SET)
print(f"\nRetrieval recall@{TOP_K}: {recall:.2f} ({hits}/{len(EVAL_SET)})")
return recall
if __name__ == "__main__":
main()