(
self,
query_set,
query_text,
query_embedding,
top_number: int,
similarity: float,
search_mode: SearchMode,
knowledge_id_list: list[str] = None,
)
| 307 | |
| 308 | class BlendSearch(ISearch): |
| 309 | def handle( |
| 310 | self, |
| 311 | query_set, |
| 312 | query_text, |
| 313 | query_embedding, |
| 314 | top_number: int, |
| 315 | similarity: float, |
| 316 | search_mode: SearchMode, |
| 317 | knowledge_id_list: list[str] = None, |
| 318 | ): |
| 319 | exec_sql, exec_params = generate_sql_by_query_dict( |
| 320 | {"embedding_query": query_set}, |
| 321 | select_string=get_file_content(os.path.join(PROJECT_DIR, "apps", "knowledge", "sql", "blend_search.sql")), |
| 322 | with_table_name=True, |
| 323 | ) |
| 324 | terms = ( |
| 325 | list(QuerySet(Termbase).filter(knowledge_id__in=knowledge_id_list).values_list("content", flat=True)) |
| 326 | if knowledge_id_list |
| 327 | else None |
| 328 | ) |
| 329 | embedding_model = select_list( |
| 330 | exec_sql, |
| 331 | [ |
| 332 | len(query_embedding), |
| 333 | json.dumps(query_embedding), |
| 334 | *exec_params, |
| 335 | len(query_embedding), |
| 336 | json.dumps(query_embedding), |
| 337 | top_number, |
| 338 | to_query(query_text, user_words=terms), |
| 339 | similarity, |
| 340 | top_number, |
| 341 | ], |
| 342 | ) |
| 343 | return embedding_model |
| 344 | |
| 345 | def support(self, search_mode: SearchMode): |
| 346 | return search_mode.value == SearchMode.blend.value |
nothing calls this directly
no test coverage detected