实现向量搜索应用层的命令(Commands)和查询(Queries),遵循 CQRS(命令查询职责分离)模式。
创建了三个命令类,用于表示改变系统状态的操作:
content: str - 文档内容(必需)metadata: Dict[str, Any] - 文档元数据(可选)document_id: str - 文档 ID(必需)content: Optional[str] - 新内容(可选)metadata: Optional[Dict[str, Any]] - 新元数据(可选)merge_metadata: bool - 是否合并元数据(默认 True)has_content_update() - 检查是否包含内容更新has_metadata_update() - 检查是否包含元数据更新document_id: str - 文档 ID(必需)创建了两个查询类,用于表示不改变系统状态的操作:
query_text: str - 查询文本(必需)top_k: int - 返回结果数量(默认 10)filters: Optional[Dict[str, Any]] - 过滤条件(可选)use_hybrid: bool - 是否使用混合搜索(默认 True)min_score: Optional[float] - 最小分数阈值(可选)has_filters() - 检查是否有过滤条件has_min_score() - 检查是否设置了最小分数get_filter_value(key, default) - 获取过滤条件值document_id: str - 文档 ID(必需)include_embedding: bool - 是否包含嵌入向量(默认 False)创建了详细的模块文档,包括:
CreateDocumentCommand:6 个测试
UpdateDocumentCommand:12 个测试
DeleteDocumentCommand:3 个测试
SearchDocumentsQuery:25 个测试
GetDocumentQuery:5 个测试
所有 51 个测试全部通过:
========================= 51 passed in 0.41s ==========================
@dataclass 装饰器__init__、__repr__ 等方法__post_init__ 方法中进行验证has_filters())本实现满足以下需求:
Requirement 1.4:应用层协调领域对象完成用例
Requirement 8.1:向量数据库相关代码组织到独立模块
application/vector_search 模块src/application/vector_search/commands.py - 命令定义(169 行)src/application/vector_search/queries.py - 查询定义(177 行)src/application/vector_search/__init__.py - 模块初始化(28 行)src/application/vector_search/README.md - 模块文档(280 行)tests/unit/application/vector_search/__init__.py - 测试模块初始化tests/unit/application/vector_search/test_commands.py - 命令测试(218 行)tests/unit/application/vector_search/test_queries.py - 查询测试(330 行)根据任务列表,下一步应该实现:
这些任务将使用本任务创建的命令和查询类。
Task 5.2 已成功完成,实现了向量搜索应用层的命令和查询定义。实现遵循 CQRS 模式,具有完整的参数验证、辅助方法和文档。所有 51 个单元测试全部通过,代码质量良好,为后续的处理器实现奠定了坚实的基础。