VietCat commited on
Commit
6577fd2
·
1 Parent(s): 19d5402

fix vector search

Browse files
Files changed (1) hide show
  1. app/main.py +53 -35
app/main.py CHANGED
@@ -399,51 +399,63 @@ async def format_search_results(question: str, matches: List[Dict[str, Any]]) ->
399
  top_result_text = ""
400
  full_result_text = ""
401
 
 
 
 
 
 
 
 
402
  for i, match in enumerate(matches, 1):
403
  if not top or (match.get('similarity', 0) > top.get('similarity', 0)):
404
  top = match
405
 
406
- # Chuẩn bị context cho LLM: liệt kê tất cả các item với chú thích rõ ràng
407
  full_result_text += f"\nĐoạn {i}:\n"
408
- # Thực hiện hành vi
409
- tieude = (top.get('tieude') or '').strip()
410
- noidung = (top.get('noidung') or '').strip()
411
  hanhvi = (tieude + "\n" + noidung).strip().replace('\n', ' ')
412
  full_result_text += f"Thực hiện hành vi:\n{hanhvi}"
413
  # Cá nhân bị phạt tiền
414
- if top.get('canhantu') or top.get('canhanden'):
415
- full_result_text += f"\nCá nhân sẽ bị phạt tiền từ {top.get('canhantu', '')} VNĐ đến {top.get('canhanden', '')} VNĐ"
 
 
416
  # Tổ chức bị phạt tiền
417
- if top.get('tochuctu') or top.get('tochucden'):
418
- full_result_text += f"\nTổ chức sẽ bị phạt tiền từ {top.get('tochuctu', '')} VNĐ đến {top.get('tochucden', '')} VNĐ"
 
 
419
  # Hình phạt bổ sung
420
- if top.get('hpbsnoidung'):
421
- full_result_text += f"\nNgoài việc bị phạt tiền, người vi phạm còn bị {top.get('hpbsnoidung')}"
 
422
  # Biện pháp khắc phục hậu quả
423
- if top.get('bpkpnoidung'):
424
- full_result_text += f"\nNgoài ra, người vi phạm còn bị buộc {top.get('bpkpnoidung')}"
425
-
 
426
  if top and (top.get('tieude') or top.get('noidung')):
427
- # Thực hiện hành vi
428
  tieude = (top.get('tieude') or '').strip()
429
  noidung = (top.get('noidung') or '').strip()
430
  hanhvi = (tieude + "\n" + noidung).strip().replace('\n', ' ')
431
  top_result_text += f"Thực hiện hành vi:\n{hanhvi}"
432
- # nhân bị phạt tiền
433
- if top.get('canhantu') or top.get('canhanden'):
434
- top_result_text += f"\nCá nhân sẽ bị phạt tiền từ {top.get('canhantu', '')} VNĐ đến {top.get('canhanden', '')} VNĐ"
435
- # Tổ chức bị phạt tiền
436
- if top.get('tochuctu') or top.get('tochucden'):
437
- top_result_text += f"\nTổ chức sẽ bị phạt tiền từ {top.get('tochuctu', '')} VNĐ đến {top.get('tochucden', '')} VNĐ"
438
- # Hình phạt bổ sung
439
- if top.get('hpbsnoidung'):
440
- top_result_text += f"\nNgoài việc bị phạt tiền, người vi phạm còn bị {top.get('hpbsnoidung')}"
441
- # Biện pháp khắc phục hậu quả
442
- if top.get('bpkpnoidung'):
443
- top_result_text += f"\nNgoài ra, người vi phạm còn bị buộc {top.get('bpkpnoidung')}"
 
 
444
  else:
445
  result_text = "Không có kết quả phù hợp!"
446
-
447
  # Prompt cho LLM
448
  prompt = (
449
  "Bạn là một trợ lý AI có kiến thức pháp luật, hãy trả lời câu hỏi dựa trên các đoạn luật sau. "
@@ -471,14 +483,20 @@ async def format_search_results(question: str, matches: List[Dict[str, Any]]) ->
471
  noidung = (match.get('noidung') or '').strip()
472
  if tieude or noidung:
473
  fallback += f" - Hành vi: {(tieude + ' ' + noidung).strip()}\n"
474
- if match.get('canhantu') or match.get('canhanden'):
475
- fallback += f" - Cá nhân bị phạt tiền từ {match.get('canhantu', '')} VNĐ đến {match.get('canhanden', '')} VNĐ\n"
476
- if match.get('tochuctu') or match.get('tochucden'):
477
- fallback += f" - Tổ chức bị phạt tiền từ {match.get('tochuctu', '')} VNĐ đến {match.get('tochucden', '')} VNĐ\n"
478
- if match.get('hpbsnoidung'):
479
- fallback += f" - Hình phạt bổ sung: {match.get('hpbsnoidung')}\n"
480
- if match.get('bpkpnoidung'):
481
- fallback += f" - Biện pháp khắc phục hậu quả: {match.get('bpkpnoidung')}\n"
 
 
 
 
 
 
482
  fallback += "\n"
483
  return fallback.strip()
484
 
 
399
  top_result_text = ""
400
  full_result_text = ""
401
 
402
+ def arr_to_str(arr, sep=", "):
403
+ if not arr:
404
+ return ""
405
+ if isinstance(arr, list):
406
+ return sep.join([str(x) for x in arr if x not in (None, "")])
407
+ return str(arr)
408
+
409
  for i, match in enumerate(matches, 1):
410
  if not top or (match.get('similarity', 0) > top.get('similarity', 0)):
411
  top = match
412
 
 
413
  full_result_text += f"\nĐoạn {i}:\n"
414
+ tieude = (match.get('tieude') or '').strip()
415
+ noidung = (match.get('noidung') or '').strip()
 
416
  hanhvi = (tieude + "\n" + noidung).strip().replace('\n', ' ')
417
  full_result_text += f"Thực hiện hành vi:\n{hanhvi}"
418
  # Cá nhân bị phạt tiền
419
+ canhanTu = arr_to_str(match.get('canhanTu'))
420
+ canhanDen = arr_to_str(match.get('canhanDen'))
421
+ if canhanTu or canhanDen:
422
+ full_result_text += f"\nCá nhân sẽ bị phạt tiền từ {canhanTu} VNĐ đến {canhanDen} VNĐ"
423
  # Tổ chức bị phạt tiền
424
+ tochucTu = arr_to_str(match.get('tochucTu'))
425
+ tochucDen = arr_to_str(match.get('tochucDen'))
426
+ if tochucTu or tochucDen:
427
+ full_result_text += f"\nTổ chức sẽ bị phạt tiền từ {tochucTu} VNĐ đến {tochucDen} VNĐ"
428
  # Hình phạt bổ sung
429
+ hpbsNoidung = arr_to_str(match.get('hpbsNoidung'), sep="; ")
430
+ if hpbsNoidung:
431
+ full_result_text += f"\nNgoài việc bị phạt tiền, người vi phạm còn bị: {hpbsNoidung}"
432
  # Biện pháp khắc phục hậu quả
433
+ bpkpNoidung = arr_to_str(match.get('bpkpNoidung'), sep="; ")
434
+ if bpkpNoidung:
435
+ full_result_text += f"\nNgoài ra, người vi phạm còn bị buộc: {bpkpNoidung}"
436
+
437
  if top and (top.get('tieude') or top.get('noidung')):
 
438
  tieude = (top.get('tieude') or '').strip()
439
  noidung = (top.get('noidung') or '').strip()
440
  hanhvi = (tieude + "\n" + noidung).strip().replace('\n', ' ')
441
  top_result_text += f"Thực hiện hành vi:\n{hanhvi}"
442
+ canhanTu = arr_to_str(top.get('canhanTu'))
443
+ canhanDen = arr_to_str(top.get('canhanDen'))
444
+ if canhanTu or canhanDen:
445
+ top_result_text += f"\nCá nhân sẽ bị phạt tiền từ {canhanTu} VNĐ đến {canhanDen} VNĐ"
446
+ tochucTu = arr_to_str(top.get('tochucTu'))
447
+ tochucDen = arr_to_str(top.get('tochucDen'))
448
+ if tochucTu or tochucDen:
449
+ top_result_text += f"\nTổ chức sẽ bị phạt tiền từ {tochucTu} VNĐ đến {tochucDen} VNĐ"
450
+ hpbsNoidung = arr_to_str(top.get('hpbsNoidung'), sep="; ")
451
+ if hpbsNoidung:
452
+ top_result_text += f"\nNgoài việc bị phạt tiền, người vi phạm còn bị: {hpbsNoidung}"
453
+ bpkpNoidung = arr_to_str(top.get('bpkpNoidung'), sep="; ")
454
+ if bpkpNoidung:
455
+ top_result_text += f"\nNgoài ra, người vi phạm còn bị buộc: {bpkpNoidung}"
456
  else:
457
  result_text = "Không có kết quả phù hợp!"
458
+
459
  # Prompt cho LLM
460
  prompt = (
461
  "Bạn là một trợ lý AI có kiến thức pháp luật, hãy trả lời câu hỏi dựa trên các đoạn luật sau. "
 
483
  noidung = (match.get('noidung') or '').strip()
484
  if tieude or noidung:
485
  fallback += f" - Hành vi: {(tieude + ' ' + noidung).strip()}\n"
486
+ canhanTu = arr_to_str(match.get('canhanTu'))
487
+ canhanDen = arr_to_str(match.get('canhanDen'))
488
+ if canhanTu or canhanDen:
489
+ fallback += f" - nhân bị phạt tiền từ {canhanTu} VNĐ đến {canhanDen} VNĐ\n"
490
+ tochucTu = arr_to_str(match.get('tochucTu'))
491
+ tochucDen = arr_to_str(match.get('tochucDen'))
492
+ if tochucTu or tochucDen:
493
+ fallback += f" - Tổ chức bị phạt tiền từ {tochucTu} VNĐ đến {tochucDen} VNĐ\n"
494
+ hpbsNoidung = arr_to_str(match.get('hpbsNoidung'), sep="; ")
495
+ if hpbsNoidung:
496
+ fallback += f" - Hình phạt bổ sung: {hpbsNoidung}\n"
497
+ bpkpNoidung = arr_to_str(match.get('bpkpNoidung'), sep="; ")
498
+ if bpkpNoidung:
499
+ fallback += f" - Biện pháp khắc phục hậu quả: {bpkpNoidung}\n"
500
  fallback += "\n"
501
  return fallback.strip()
502