scipious commited on
Commit
0c66e4b
·
verified ·
1 Parent(s): f7ddd83

Update reg_embedding_system.py

Browse files
Files changed (1) hide show
  1. reg_embedding_system.py +17 -17
reg_embedding_system.py CHANGED
@@ -276,8 +276,8 @@ def search_with_metadata_filter(
276
  params = []
277
 
278
  for key, value in metadata_filter.items():
279
- logger.info(f"[key] {key}")
280
- logger.info(f"[value] {value}")
281
  if isinstance(value, list):
282
  if not value:
283
  continue
@@ -295,14 +295,14 @@ def search_with_metadata_filter(
295
  try:
296
  cursor.execute(sql_query, params)
297
  filtered_ids = {row[0] for row in cursor.fetchall()}
298
- logger.info(f"[사전 필터링] {len(filtered_ids)}개 ID 획득 → FAISS 검색 제한")
299
  except Exception as e:
300
- logger.info(f"[경고] SQLite 필터링 실패: {e}")
301
  filtered_ids = None
302
  else:
303
- logger.info("[안내] 필터 조건 없음 → 전체 검색")
304
  else:
305
- logger.info("[안내] 필터 또는 DB 없음 → 전체 검색")
306
 
307
  # === 2. FAISS 벡터 검색 ===
308
  if filtered_ids and len(filtered_ids) > 0:
@@ -331,11 +331,11 @@ def search_with_metadata_filter(
331
  if isinstance(doc, Document):
332
  vector_docs.append(doc)
333
 
334
- logger.info(f"[벡터 검색] {len(valid_indices)}개 후보 → {len(vector_docs)}개 유효")
335
  else:
336
  search_k = k * 5
337
  vector_docs = vector_ret.invoke(query, config={"search_kwargs": {"k": search_k}})
338
- logger.info(f"[벡터 검색] 전체 검색 → {len(vector_docs)}개 후보")
339
 
340
  # === 3. BM25 검색 ===
341
  bm25_docs = []
@@ -346,13 +346,13 @@ def search_with_metadata_filter(
346
  bm25_docs = [d for d in candidates if d.metadata.get('faiss_id') in filtered_ids]
347
  else:
348
  bm25_docs = candidates[:k]
349
- logger.info(f"[BM25 검색] {len(candidates)}개 후보 → {len(bm25_docs)}개 필터링 후")
350
 
351
  # === 4. 병합 및 최종 k개 반환 ===
352
  combined = {id(d): d for d in (vector_docs + bm25_docs)}.values()
353
  final_results = list(combined)[:k]
354
 
355
- logger.info(f"[최종 결과] {len(final_results)}개 문서 반환")
356
  return final_results
357
 
358
  def get_unique_metadata_values(
@@ -396,7 +396,7 @@ def smart_search_vectorstore(
396
  # 1. 기본 검색
397
  basic_results = retriever.invoke(query)
398
  basic_results = basic_results[:k]
399
- logger.info(f"[기본 검색] {len(basic_results)}개 문서 검색 완료")
400
 
401
  if not enable_detailed_search or not vectorstore or not sqlite_conn:
402
  logger.info("[안내] 상세 검색 비활성화 또는 컴포넌트 부족 → 기본 검색 결과만 반환")
@@ -421,13 +421,13 @@ def smart_search_vectorstore(
421
 
422
  counter = Counter(regulation_parts)
423
  most_extracted_category = counter.most_common(2)
424
- logger.info(f"[빈도 분석] regulation_part 빈도: {dict(counter)}")
425
- logger.info(f"[상위 카테고리] {most_extracted_category}")
426
 
427
  # 3. 상세 검색
428
  detailed_results = []
429
  for rank, (category, count) in enumerate(most_extracted_category, 1):
430
- logger.info(f"[상세 검색 {rank}순위] '{category}' 카테고리 검색 시작 (빈도: {count})")
431
  metadata_filter = {'regulation_part': category}
432
 
433
  try:
@@ -440,9 +440,9 @@ def smart_search_vectorstore(
440
  sqlite_conn=sqlite_conn
441
  )
442
  detailed_results.extend(category_results)
443
- logger.info(f"[상세 검색 {rank}순위] {len(category_results)}개 추가 문서 검색 완료")
444
  except Exception as e:
445
- logger.info(f"[경고] 상세 검색 {rank}순위 실패 ({category}): {e}")
446
  continue
447
 
448
  # 4. 결과 병합
@@ -462,7 +462,7 @@ def smart_search_vectorstore(
462
  final_results.append(doc)
463
 
464
  final_results = final_results[:k]
465
- logger.info(f"[최종 결과] 기본 {len(basic_results)}개 + 상세 {len(detailed_results)}개 → 중복 제거 후 {len(final_results)}개 반환")
466
 
467
  return final_results
468
 
 
276
  params = []
277
 
278
  for key, value in metadata_filter.items():
279
+ #logger.info(f"[key] {key}")
280
+ #logger.info(f"[value] {value}")
281
  if isinstance(value, list):
282
  if not value:
283
  continue
 
295
  try:
296
  cursor.execute(sql_query, params)
297
  filtered_ids = {row[0] for row in cursor.fetchall()}
298
+ #logger.info(f"[사전 필터링] {len(filtered_ids)}개 ID 획득 → FAISS 검색 제한")
299
  except Exception as e:
300
+ #logger.info(f"[경고] SQLite 필터링 실패: {e}")
301
  filtered_ids = None
302
  else:
303
+ #logger.info("[안내] 필터 조건 없음 → 전체 검색")
304
  else:
305
+ #logger.info("[안내] 필터 또는 DB 없음 → 전체 검색")
306
 
307
  # === 2. FAISS 벡터 검색 ===
308
  if filtered_ids and len(filtered_ids) > 0:
 
331
  if isinstance(doc, Document):
332
  vector_docs.append(doc)
333
 
334
+ #logger.info(f"[벡터 검색] {len(valid_indices)}개 후보 → {len(vector_docs)}개 유효")
335
  else:
336
  search_k = k * 5
337
  vector_docs = vector_ret.invoke(query, config={"search_kwargs": {"k": search_k}})
338
+ #logger.info(f"[벡터 검색] 전체 검색 → {len(vector_docs)}개 후보")
339
 
340
  # === 3. BM25 검색 ===
341
  bm25_docs = []
 
346
  bm25_docs = [d for d in candidates if d.metadata.get('faiss_id') in filtered_ids]
347
  else:
348
  bm25_docs = candidates[:k]
349
+ #logger.info(f"[BM25 검색] {len(candidates)}개 후보 → {len(bm25_docs)}개 필터링 후")
350
 
351
  # === 4. 병합 및 최종 k개 반환 ===
352
  combined = {id(d): d for d in (vector_docs + bm25_docs)}.values()
353
  final_results = list(combined)[:k]
354
 
355
+ #logger.info(f"[최종 결과] {len(final_results)}개 문서 반환")
356
  return final_results
357
 
358
  def get_unique_metadata_values(
 
396
  # 1. 기본 검색
397
  basic_results = retriever.invoke(query)
398
  basic_results = basic_results[:k]
399
+ #logger.info(f"[기본 검색] {len(basic_results)}개 문서 검색 완료")
400
 
401
  if not enable_detailed_search or not vectorstore or not sqlite_conn:
402
  logger.info("[안내] 상세 검색 비활성화 또는 컴포넌트 부족 → 기본 검색 결과만 반환")
 
421
 
422
  counter = Counter(regulation_parts)
423
  most_extracted_category = counter.most_common(2)
424
+ #logger.info(f"[빈도 분석] regulation_part 빈도: {dict(counter)}")
425
+ #logger.info(f"[상위 카테고리] {most_extracted_category}")
426
 
427
  # 3. 상세 검색
428
  detailed_results = []
429
  for rank, (category, count) in enumerate(most_extracted_category, 1):
430
+ #logger.info(f"[상세 검색 {rank}순위] '{category}' 카테고리 검색 시작 (빈도: {count})")
431
  metadata_filter = {'regulation_part': category}
432
 
433
  try:
 
440
  sqlite_conn=sqlite_conn
441
  )
442
  detailed_results.extend(category_results)
443
+ #logger.info(f"[상세 검색 {rank}순위] {len(category_results)}개 추가 문서 검색 완료")
444
  except Exception as e:
445
+ #logger.info(f"[경고] 상세 검색 {rank}순위 실패 ({category}): {e}")
446
  continue
447
 
448
  # 4. 결과 병합
 
462
  final_results.append(doc)
463
 
464
  final_results = final_results[:k]
465
+ #logger.info(f"[최종 결과] 기본 {len(basic_results)}개 + 상세 {len(detailed_results)}개 → 중복 제거 후 {len(final_results)}개 반환")
466
 
467
  return final_results
468