test_retrieval.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. """检索层冒烟测试:实体接地 + 查询模板。"""
  2. from __future__ import annotations
  3. import sys
  4. from knowledge_agent.retrieval import ground_entities, load_entity_index
  5. from knowledge_agent.retrieval.templates import (query_attendance, query_finance,
  6. query_project_children,
  7. query_project_renewals,
  8. query_service_period)
  9. def main() -> None:
  10. sys.stdout.reconfigure(encoding="utf-8")
  11. idx = load_entity_index()
  12. print(f"索引实体数: {len(idx.entities)}")
  13. print("\n== 实体接地 ==")
  14. for q in ["图书馆", "陆雷雷", "青东片区", "公安局", "董一青"]:
  15. r = ground_entities(q, idx)
  16. best = r.best
  17. if best:
  18. print(f" {q!r} -> {best.entity.kind}:{best.entity.label} (key={best.entity.key}, 置信度={best.score:.2f})")
  19. else:
  20. print(f" {q!r} -> 无候选")
  21. print("\n== 查询模板 ==")
  22. for label, res in [
  23. ("区图书馆 2026-03 考勤", query_attendance("XMSQ0102", "2026-03")),
  24. ("区图书馆 2026-03 项目财务", query_finance("XMSQ0102", "2026-03")),
  25. ("董一青 服务期", query_service_period(emp_id="KWL2307024")),
  26. ("税务局 子项目", query_project_children("XMSQ0108")),
  27. ("区图书馆 续签链", query_project_renewals("XMSQ0102")),
  28. ]:
  29. print(f" [{label}] 来源={res.source}, {len(res.rows)} 行")
  30. for row in res.rows[:3]:
  31. print(" ", row)
  32. if __name__ == "__main__":
  33. main()