Open ykdb opened 1 day ago
검색어가 입력된 후 법률 서비스에서 판례 출력까지의 전체 과정을 도식화하여 나타낸 설계도입니다. 이 과정은 사용자로부터 검색어가 입력된 후, 백엔드 서버에서 처리하고 KoBERT 및 Elasticsearch를 사용해 판례를 분석 및 검색한 후 프론트엔드로 출력하는 흐름을 포함합니다.
javascript
코드 복사
┌─────────────────────────────────────────────────────────────┐
│ 사용자 (프론트엔드 UI) │
│─────────────────────────────────────────────────────────────│
│ 1. 검색어 입력: │
│ - 사용자가 법적 질문 입력 (검색창) │
│ - 예: "계약 불이행 관련 판례" │
│ │
│ 2. "검색" 버튼 클릭 → API 호출 │
└─────────────────────────────┬───────────────────────────────┘
│ (HTTP POST 요청: 검색어 전달)
▼
┌─────────────────────────────────────────────────────────────┐
│ 백엔드 API 서버 (Flask, FastAPI) │
│─────────────────────────────────────────────────────────────│
│ 3. 요청 수신: │
│ - 백엔드 서버에서 검색어를 수신 │
│ - 입력된 검색어를 KoBERT로 전달 │
│ │
│ 4. KoBERT를 통한 질문 분석 및 키워드 추출 │
│ - KoBERT를 사용해 검색어 임베딩 │
│ - 주요 키워드 및 벡터 생성 │
│ │
│ 5. Elasticsearch로 판례 검색 요청 │
│ - 키워드를 사용해 Elasticsearch에 판례 검색 요청 │
│ │
│ 6. Elasticsearch에서 판례 검색 │
│ - BM25 알고리즘으로 판례와 키워드 간 유사도 분석 │
│ - 가장 관련성 높은 판례를 반환 │
│ │
│ 7. 판례 데이터 가공 및 반환 │
│ - 판례 요약본 및 참조 법조문 데이터 반환 │
│ │
│ 8. 프론트엔드로 검색 결과 전송 │
│ - JSON 형식으로 판례 데이터 전달 │
└─────────────────────────────┬───────────────────────────────┘
│ (HTTP 응답: 판례 데이터 전달)
▼
┌─────────────────────────────────────────────────────────────┐
│ 프론트엔드 (React, Vue.js) │
│─────────────────────────────────────────────────────────────│
│ 9. 판례 데이터 수신 및 화면에 렌더링 │
│ - React.js 또는 Vue.js로 UI에 판례 결과 표시 │
│ - 판례 리스트와 요약 정보 출력 │
│ │
│ 10. 사용자 상호작용 │
│ - 사용자는 판례 리스트에서 특정 판례를 선택하여 상세 정보│
│ 조회 가능 │
│ - 상세 정보에 참조 법조문 표시 │
└─────────────────────────────────────────────────────────────┘
프론트엔드 (검색어 입력 및 전송): 사용자는 검색창에 법적 질문 또는 검색어를 입력하고, "검색" 버튼을 클릭합니다. 프론트엔드에서 이 입력을 백엔드 서버로 전달하기 위해 HTTP 요청을 보냅니다.
백엔드 서버 (검색어 분석 및 처리): Flask 또는 FastAPI에서 요청을 수신하고, KoBERT 모델을 통해 입력된 검색어를 분석합니다. KoBERT는 질문의 키워드를 추출하고, 벡터화를 통해 검색어와 관련된 의미를 이해합니다.
Elasticsearch (판례 검색): KoBERT가 생성한 임베딩 벡터 및 키워드를 사용하여 Elasticsearch에서 판례를 검색합니다. Elasticsearch는 BM25 알고리즘을 사용하여 저장된 판례와 검색어 간의 유사도를 계산하고, 가장 관련성이 높은 판례를 반환합니다.
백엔드 처리 및 결과 반환: 백엔드는 Elasticsearch에서 받은 판례 데이터를 가공하여, 프론트엔드가 쉽게 처리할 수 있는 JSON 형식으로 변환한 후 이를 반환합니다.
프론트엔드 (결과 렌더링 및 출력): 프론트엔드는 백엔드에서 받은 판례 리스트와 요약본을 사용자 화면에 표시합니다. 사용자는 관련 판례 리스트에서 특정 판례를 선택하여 세부 정보를 확인하고, 판례에서 인용된 참조 법조문도 함께 확인할 수 있습니다.
프론트엔드 (React, Vue.js):
사용자 입력 및 판례 데이터 표시. API와 통신하여 판례 검색 결과를 UI에 출력.
백엔드 (Flask, FastAPI):
사용자의 질문을 받아 KoBERT와 Elasticsearch로 처리 후 결과 반환.
KoBERT: 법적 질문을 분석하고, 핵심 키워드를 추출한 후 Elasticsearch로 검색어 전송.
Elasticsearch: 판례 데이터베이스에서 관련 판례를 검색하고 유사도에 따라 결과를 반환.
PostgreSQL: 판례와 법조문 데이터베이스로, 검색된 판례와 참조 법조문 정보를 제공.
법률서비스 전체코드 흐름도
구성 요소:
(1) Flask API 서버 app.py (Flask API 서버)
(2) Elasticsearch 설정 및 데이터 인덱싱 index_data.py (Elasticsearch 인덱싱)
(1) 백엔드 실행
(2) Elasticsearch 인덱싱
(3) 프론트엔드 실행