(
self,
query_text,
knowledge_id_list: list[str],
exclude_document_id_list: list[str],
top_number: int,
similarity: float,
search_mode: SearchMode,
embedding: Embeddings,
)
| 110 | return True |
| 111 | |
| 112 | def hit_test( |
| 113 | self, |
| 114 | query_text, |
| 115 | knowledge_id_list: list[str], |
| 116 | exclude_document_id_list: list[str], |
| 117 | top_number: int, |
| 118 | similarity: float, |
| 119 | search_mode: SearchMode, |
| 120 | embedding: Embeddings, |
| 121 | ): |
| 122 | if knowledge_id_list is None or len(knowledge_id_list) == 0: |
| 123 | return [] |
| 124 | exclude_dict = {} |
| 125 | query_text = normalize_for_embedding(query_text) |
| 126 | embedding_query = embedding.embed_query(query_text) |
| 127 | if exclude_document_id_list is not None and len(exclude_document_id_list) > 0: |
| 128 | exclude_dict.__setitem__("document_id__in", exclude_document_id_list) |
| 129 | for search_handle in search_handle_list: |
| 130 | if search_handle.support(search_mode): |
| 131 | # Query per knowledge base to leverage per-KB partial HNSW indexes |
| 132 | # (WHERE knowledge_id = '{k_id}'), which won't be used with knowledge_id__in |
| 133 | if len(knowledge_id_list) == 1: |
| 134 | query_set = QuerySet(Embedding).filter(knowledge_id=knowledge_id_list[0], is_active=True).exclude(**exclude_dict) |
| 135 | return search_handle.handle( |
| 136 | query_set, query_text, embedding_query, top_number, similarity, search_mode, knowledge_id_list |
| 137 | ) |
| 138 | else: |
| 139 | all_results = [] |
| 140 | for kid in knowledge_id_list: |
| 141 | query_set = QuerySet(Embedding).filter(knowledge_id=kid, is_active=True).exclude(**exclude_dict) |
| 142 | results = search_handle.handle( |
| 143 | query_set, query_text, embedding_query, top_number, similarity, search_mode, knowledge_id_list |
| 144 | ) |
| 145 | all_results.extend(results) |
| 146 | all_results.sort(key=lambda x: x.get("similarity", x.get("comprehensive_score", 0)), reverse=True) |
| 147 | return all_results[:top_number] |
| 148 | |
| 149 | def query( |
| 150 | self, |
no test coverage detected