
DeepSeek R1은 첫 번째 릴리스에서 강력한 추론 기능을 선보였습니다. 이 블로그 게시물에서는 추론 기능을 사용하는 방법에 대해 자세히 설명합니다. DeepSeek R1 법률 문서 분야를 전문으로 하는 검색 증강 생성(RAG) 시스템 구축 경험.
법률 전문가들이 수많은 판례, 법령, 법률 검토를 검색해야 하는 어려운 작업에 직면하는 경우가 많기 때문에 법률 문서를 선택했습니다. 아무리 세심한 조사를 하더라도 내용을 정확하게 요약하는 것은 고사하고 적합한 문서를 찾는 데 어려움을 겪을 수 있습니다. 바로 이런 경우 RAG 큰 차이를 만들 수 있는 영역(Harvey AI 참조).
우리는 대규모 법률 문서 데이터 세트를 기반으로 임베딩 모델로 DeepSeek R1과 Qwen2를 사용해 RAG를 구축했습니다. 전체 RAG 구축 프로세스를 오픈 소스화했습니다( vLLM 노래로 응답 스카이파일럿 지원 제공)를 통해 어떤 것이 효과가 있고 어떤 것이 효과가 없는지 등 몇 가지 귀중한 교훈을 공유했습니다.
직접 체험해보고 싶으신가요? 온라인 데모를 사용해 보세요:여기를 클릭하세요.
이 RAG 빌드 프로세스를 오픈소스화했습니다. 보려면 여기를 클릭하세요.. 결합하는 방법을 자유롭게 살펴보십시오. vLLM + SkyPilot 빠르고 안정적이며 확장 가능한 성능을 제공합니다.

법률 문서에 RAG를 구축하는 이유는 무엇인가요?
검색 증강 생성(RAG)은 정확성과 추적성이 가장 중요한 법률과 같은 분야에서 매우 중요합니다. 전문화된 리트리버와 강력한 대규모 언어 모델(LLM) 생성기를 결합하면 최적의 결과를 얻을 수 있습니다:
- 관련성이 높은 문서의 비율검색(데이터)
- 추론력이 있는 텍스트생성
- 직접 참조환각 감소
이 RAG를 구축하기 위해 다음을 사용했습니다:
- 법 더미/법 더미 데이터 집합의 하위 집합(법률 자문 중심);
- 크로마DB 임베딩을 저장하고 쿼리하기 위한 벡터 저장소 역할을 합니다;
- Qwen2 를 검색 임베딩 모델로 사용하세요;
- DeepSeek R1 최종 답변으로 모델을 생성합니다.
전체 시스템은 다음에서 실행됩니다. vLLM 를 통해 전달할 수 있으며 스카이파일럿 모든 클라우드에 원활하게 배포하여 최적의 GPU 가용성과 비용 효율성을 보장합니다. 전체 오픈 소스 RAG 빌드 프로세스는 여기에서 확인할 수 있습니다.
귀중한 경험: 주의사항 및 금기 사항
1. 검색에 DeepSeek R1을 사용하지 마세요.
망설이지 말고 (실행하세요.) DeepSeek R1 는 추론 능력이 뛰어나지만부적합임베드 생성용 - 적어도 지금은 아닙니다.
특수 임베딩 모델을 사용하면 다음과 같은 이점을 얻을 수 있습니다. Alibaba-NLP/gte-Qwen2-7B-instruct
(현재 MTEB에 있음) 차트(베스트셀러) (가장 높은 순위의 임베딩 모델)에 의해 생성된 임베딩과 비교하여 딥서치 R1에서 생성된 임베딩을 비교합니다.
이 두 모델을 각각 사용하여 데이터 세트에 대한 임베딩을 생성하고 두 개의 벡터 데이터베이스를 구축합니다. 그런 다음 두 모델에 동일한 쿼리를 사용하여 각 벡터 데이터베이스에서 가장 유사한 임베딩 상위 5개가 검색됩니다.
문의: 我收到了一张关于债务纠纷的小额索赔法庭传票,我应该如何准备?
결과: Qwen2 | DeepSeek-R1에 대한 검색 결과 |
---|---|
[캘리포니아] 소액 청구에 관한 질문 | 텔레마케터를 고용하고 법에도 불구하고 계속 전화하는 회사를 고소할 수 있나요? |
[CO] 방금 보험에서 지불한 병원비 청구서에 대한 법원 소환장을 받았습니다 ...... 증거가 있지만 여전히 변호사를 고용해야 하나요? | 전 여자친구의 딸이 절도 혐의로 체포된 경우 어떻게 해야 하나요? |
3,500달러의 대출금을 연체했다는 이유로 소송을 당하고 있습니다. | 퇴근 후 늦은 밤, 거의 텅 빈 주차장으로 걸어 나가는데 두 남자가 차 문을 열고 들어오는 것을 목격합니다. 그만하라고 말했지만 그들은 무시합니다. 권총을 숨겨서 소지하고 있는데 어떻게 해야 할까요? |
룸메이트의 고양이가 견과류가 든 트레일 믹스 간식을 먹고 1,500달러가 넘는 청구서를 들고 동물병원에 가야 했습니다. 그녀는 저를 소액 청구 법원에 데려가서 비용을 지불하라고 협박하고 있지만 그 간식이 제 것이라는 증거가 없습니다. 걱정해야 할까요? | 미주리주에서 물적 증거가 없는 마리화나 소지 혐의로 기소되었습니다. |
최근에 다 갚았다고 생각했던 채무에 대한 민사 소환장을 받았습니다. | "누군가에게 개를 세우는 것"은 합법인가요? |
왜 차이가 있을까요?
위의 표에서 DeepSeek R1의 검색 결과가 훨씬 더 나쁩니다. 그 이유는 무엇일까요?
근본적인 문제는 DeepSeek R1의 학습 방식에 있다고 생각합니다. DeepSeek R1의 아키텍처는 순차적 사고와 논리적 연결을 강조하는 추론에 주로 초점을 맞추고 있습니다.즉, DeepSeek R1은 문서를 시맨틱 공간에 매핑하지 않습니다.
이와 대조적으로, Qwen2 변형(gte-Qwen2-7B-instruct
) 의미론적 유사성 작업을 위한 교육특정 문구에 관계없이 개념적으로 유사한 문서가 서로 밀집된 고차원 공간을 만들 수 있습니다.
이러한 학습 접근 방식의 차이로 인해 Qwen2는 쿼리 의도를 잘 포착하는 반면, DeepSeek R1은 주제와 관련이 있지만 실질적으로 관련이 없는 결과를 검색하는 추론 경로를 따르는 경우가 있습니다.
임베딩을 위해 미세 조정하지 않는 한, DeepSeek R1을 RAG의 검색 임베딩 모델로 사용해서는 안 됩니다.
2. R1을 사용한 세대: 인상적인 추론 능력
망설이지 말고 (실행하세요.) R1 임베딩하는 데 약간의 어려움이 있지만 생성 그렇게 할 수 있는 능력은 놀랍습니다. R1의 연쇄적 사고 방식을 활용하여 관찰했습니다:
- 더 강력한 일관성: 이 모델은 여러 문서에서 정보를 종합하고 관련 구절을 명확하게 참조할 수 있습니다.
- 환각 감소: R1 내부적으로 '스스로' 추론하고 각 결론을 데이터로 검증하세요.
몇 가지 예를 살펴보겠습니다:
예 1: 임대 종료
질문: 我想解除租约,但房东不允许我这样做。
DeepSeek R1의 사고 과정 보기
임대 계약을 해지하고 싶은데 집주인이 허락하지 않아요. 어떤 옵션이 있는지 잘 모르겠습니다. 제공된 문서를 바탕으로 상황을 정리하려고 합니다.
먼저, 페이퍼 1에서 임대차 계약 조기 종료에 대한 위약금에 대해 읽었던 기억이 납니다. 한 사람이 18개월 임대 계약 중 15개월 후에 임대 계약을 해지할 수 있는지 물었고, 그 대답은 '그렇다'였지만 임대인이 동의하거나 새로운 세입자를 찾은 경우에만 가능하다는 것이었습니다. 따라서 임대 계약을 조기에 종료하려면 집주인이 동의하지 않거나 빨리 재임대할 수 없는 한 집주인이 책임을 져야 할 수도 있습니다. 이 방법도 가능한 방법인 것 같지만 집주인이 협상에 응할지 확신이 서지 않습니다.
다음으로, 문제 2에서는 누군가가 임대차 계약을 해지하려는 이유는 결혼 때문이라고 가정합니다. 답안에는 임대차 계약을 해지할 때 수수료를 지불해야 하거나 임대차 기간이 끝날 때까지 기다려야 한다는 조항이 있을 수 있다고 나와 있습니다. 따라서 제 임대 계약에 전대 또는 양도 조항과 같이 계약 해지를 허용하는 조항이 있는지 확인할 수 있습니다. 그렇지 않은 경우 위약금을 지불하거나 임대 기간이 끝날 때까지 기다려야 할 수도 있습니다.
페이퍼 3에서는 안내견으로 인한 임대 계약 종료에 대해 설명합니다. 위약금 지불, 재임대, 다른 안내견 찾기, 임대 계약이 만료될 때까지 기다리기 등의 옵션이 있습니다. 저에게는 해당되지 않지만 특별한 사유가 없는 한 일반적으로 임대 계약을 해지할 때 어떤 결과가 초래된다는 것을 보여줍니다.
4번 문제에서는 임대인이 임대료를 인상했고 사용자는 짧은 통지 기간에 대해 문의했습니다. 답변은 이론적으로는 30일의 통지 기간이 있어야 하지만 임대인이 다음 임차 계약까지 기존 임대료를 지불하기로 하는 등 타협안을 제시할 수 있다고 언급하고 있습니다. 집주인이 임대차 계약 해지를 거부하는 경우 더 높은 임대료를 지불하는 옵션을 제안할 수도 있지만, 이것이 제 재정적 능력 범위 내에 있는지 모르겠습니다.
문서 5에는 집주인이 고양이를 키운다는 이유로 임대차 계약 갱신을 거부했다고 언급되어 있습니다. 답변에 따르면 집주인은 법적으로 임대 계약을 갱신할 의무가 없으므로 임대 계약을 갱신하지 않을 수 있는 선택권이 있다고 합니다. 집주인에게도 비슷한 재량권이 있을 수 있다는 생각이 들었지만 그것이 거절의 이유인지는 잘 모르겠습니다.
문제 6에서는 임대 계약이 갱신되고 새로운 조건이 추가되는 상황에 대해 설명합니다. 답변에 따르면 집주인은 기존 임대 계약이 만료될 때까지 기존 임대 계약을 준수해야 한다고 명시되어 있습니다. 따라서 집주인이 임대차 계약을 갱신하지 않겠다는 특별한 조항이 없는 한 임대차 계약이 끝날 때까지 기다려야 한다는 의미일 수 있습니다.
문서 7과 8에서는 임대 사무실이 임대 계약을 갱신할 때 직면하는 어려움에 대해 설명합니다. 이 문서에는 임대인이 나쁜 리뷰나 기타 이유로 임대차 계약을 갱신하지 않으려 할 수 있지만 법적으로 임대인은 임대차 계약을 갱신하지 않을 수 있다고 언급되어 있습니다. 이는 집주인에게 어느 정도 권한이 있다는 것을 의미하지만, 특별한 사유가 없는 한 법적으로 저를 임대차 계약에서 조기 퇴거시킬 의무는 없을 수 있습니다.
문서 9에서는 이사하기 30일 전에 통지해야 하는 요건에 대해 설명합니다. 입주할 때 계약서에 서명하지 않았더라도 집주인은 여전히 통지를 요구할 수 있습니다. 따라서 통지 없이 퇴거할 경우 벌금이 부과되거나 남은 임대 기간 동안 임대료를 지불해야 할 수도 있습니다.
마지막으로 10번 문제는 룸메이트가 퇴거할 경우 세입자가 월세 전액을 부담해야 하는 상황을 다룹니다. 답은 전대를 통해 임대료를 분담할 것을 제안합니다. 만약 이사를 가게 된다면 제 몫의 임대료를 전대할 수 있지만 임대 계약 조건에 따라 달라질 수 있습니다.
요약하자면, 임대 계약서에 조기 해지 관련 조항이 있는지 확인해야 합니다. 그렇지 않은 경우 집주인이 동의하지 않으면 위약금을 지불해야 할 수도 있습니다. 이사 등 정당한 사유가 있는 경우 집주인과 협상을 시도해 볼 수 있습니다. 전대가 가능하다면 해결책이 될 수 있지만 임대차 계약서에서 허용하는지 확인해야 합니다. 다른 방법을 찾을 수 없다면 임대 계약이 자연스럽게 끝날 때까지 기다릴 수 있는지 여부도 고려해야 합니다.
DeepSeek R1의 답글 보기
제공된 문서를 분석한 결과를 바탕으로 임대인이 조기 해지를 허용하지 않을 때 임대차 계약을 해지하는 구조화된 방법은 다음과 같습니다:
1. 임대 계약 검토
조기 해지 조항: 임대차 계약서에 조기 해지 관련 조항이 있는지 확인하세요. 이러한 조항이 있는 경우 법적으로 위약금을 지불하거나 임대인에게 임대차 계약을 해지하기 위해 사전 통지를 해야 할 수 있습니다[1].
전대 또는 양도: 임대 계약에서 임대를 다른 사람에게 전대하거나 양도할 수 있는지 여부를 확인합니다. 이렇게 하면 벌금이나 소송을 피하는 데 도움이 될 수 있습니다[2].
2. 임대인의 재량권 이해하기
임의 갱신: 임대인은 특히 임대차 계약에 명시적으로 조기 해지를 허용하는 조항이 없는 경우 임대차 계약 갱신을 거부할 권리가 있을 수 있습니다. 이 경우 회원님은 계약 기간이 끝날 때까지 임대차 계약을 준수해야 할 수 있습니다[6][8].
3. 재정적 결과 고려
위약금: 임대인의 동의 없이 임차 계약을 조기에 해지할 경우 금전적 불이익을 받을 수 있으므로 이에 대비하세요. 여기에는 추가 임대료 지불 또는 손해 보증금[1][9]이 포함될 수 있습니다.
4. 협상 살펴보기
조건 협상: 이사 등 조기 해지 사유가 있는 경우 임대인과 협상하여 위약금을 감면받거나 임대차 계약을 조기에 해지할 수 있도록 허락받을 수 있습니다[2].
5. 솔루션으로서의 전대
공간 전대: 가능하면 임차 공간의 일부를 전대하여 재정적 의무를 충당하는 것을 고려하세요[10].
6. 미래를 위한 계획
임대 계약이 끝날 때까지 기다리기: 조기 해지가 불가능하다면 임대 계약이 만료될 때까지 거주할 계획을 세우세요. 이렇게 하면 벌금과 법적 문제를 피할 수 있습니다[6][8].
결론:어떤 조치를 취하기 전에 항상 임대 약관을 신중하게 검토하세요. 조기 계약 해지가 허용되지 않는 경우에는 재임대하거나 임대 계약이 종료될 때까지 기다리는 것을 고려하세요. 집주인과 협상할 수 있다면 이것이 최선의 조치일 수 있습니다. 구체적인 상황에 대한 조언은 항상 법률 전문가와 상의하세요.
예 2: 소액 청구 법원
질문. 我收到了一张关于争议债务的小额索赔法院传票。我应该如何准备?
DeepSeek R1의 사고 과정 보기
분쟁 중인 채무에 대한 소액 청구 법원 소환장을 받았습니다. 어디서부터 시작해야 할지 잘 모르겠지만 어떻게 준비해야 할지 알아내야 합니다. 검색 결과를 보니 비슷한 상황을 겪은 사람들이 몇 명 있어서 그들의 경험에서 무언가를 배울 수 있을 것 같습니다.
먼저 채무의 성격을 이해해야 합니다. 문서 5에서 누군가가 이미 갚았다고 생각한 채무에 대한 독촉장을 받았습니다. 그들은 왜 또다시 독촉장을 받았는지 이해하지 못합니다. 그래서 이 채무가 유효한지 확인해야 합니다. 제 기록을 확인하거나 채권자에게 채무 증명을 요청해야 할지도 모르겠습니다. 문서 10에 따르면 불만을 부인하고 증거를 요청하는 것이 좋습니다. 이렇게 하면 채무의 신빙성에 의문을 제기할 수 있습니다.
다음으로 사례를 준비해야 합니다. 문서 1에서 누군가가 비슷한 문제를 다룬 적이 있는데, 10분 이내에 사례를 발표할 수 있도록 하라는 조언을 받았습니다. 즉, 간결하게 작성하고 모든 증거를 정리해야 한다는 뜻입니다. 문서 2에서와 같이 결제 영수증, 채권자가 보낸 합의서, 보험 서류 등 채무가 없음을 증명할 수 있는 모든 서류를 모아야 합니다.
증인 문제도 고려해야 합니다. 문서 4에서는 룸메이트가 수의사 청구서 문제로 이 사람을 법정에 데려가겠다고 협박하는데, 소송을 제기하지 않는 한 협박을 무시하라는 조언이 나와 있습니다. 하지만 고소를 당한다면 저를 뒷받침할 증인을 확보할 준비를 해야 합니다. 제가 비용을 지불하려고 할 때 함께 있었던 친구나 문서 7에 나와 있는 것처럼 집 상태를 증언해 줄 수 있는 전 세입자가 증인이 될 수 있습니다.
법원 절차를 이해하는 것이 중요합니다. 문서 7에서 볼 수 있듯이 소액 청구 법원 소송에서 승소한 후 집주인이 항소를 제기하여 다시 법정에 출두해야 했습니다. 그 사람은 같은 절차를 다시 거쳐야 했습니다. 따라서 승소하더라도 항소 절차가 있을 수 있다는 것을 알아야 합니다. 필요하다면 다시 소송을 제기할 준비를 해야 합니다.
또한 소환장과 탄원서도 고려해야 합니다. 문서 5에서는 누군가 변론에 응답해야 합니다. 그렇지 않으면 채무 불이행 판결을 받을 수 있습니다. 따라서 제 시간에 응답하고 내 변호를 명확하게 진술해야 합니다.
방어 진술서 제출은 다음 단계입니다. 문서 10에는 제안이 있더라도 항상 거절하고 증거를 요청해야 한다고 나와 있습니다. 이렇게 하면 이후 협상에서 더 많은 영향력을 행사할 수 있습니다. 방어 진술서에 제 주장과 증거를 모두 나열하겠습니다.
저의 재정 상황을 고려하는 것도 중요합니다. 문서 6에서 채무자가 돈을 갚지 못해 감옥에 갇히는 것에 대한 우려가 있었지만 채무자의 감옥은 존재하지 않는다는 것이 명확해졌습니다. 하지만 여전히 제 재정 상황에 대해 법원과 소통해야 합니다. 만약 납부할 수 없다면 문서 5와 같이 합리적인 노력을 했다는 것을 보여주고 분할 납부 계획을 제시해야 합니다.
법적 문제가 확실하지 않은 경우 변호사와 상담해야 할 수도 있습니다. 문서 3의 경우, 이사 중이며 법정 기일이 잡혀 있습니다. 특히 다른 부채나 복잡한 문제가 있는 경우 채무 조정 변호사와 상담하는 것이 도움이 될 수 있습니다.
마지막으로 법원 심리에 대비해야 합니다. 정시에 도착하고, 적절한 복장을 갖추고, 모든 서류를 준비하는 것이 중요합니다. 자료 7에서 이 사람은 증거를 잘 준비하여 승소했으니 저도 그렇게 해야 합니다.
요약하자면, 채무를 확인하고, 증거를 준비하고, 법원 절차를 이해하고, 소환장에 올바르게 응답하고, 변호사와 상담하고, 재판을 준비하기 위해 체계적으로 준비해야 합니다. 관련 문서를 인용하면 제 결정을 뒷받침하는 데 도움이 됩니다.
DeepSeek R1의 답글 보기
제공된 법률 문서의 분석을 바탕으로 분쟁이 있는 채무와 관련하여 소액 청구 법원 소환장을 준비하기 위한 체계적이고 조직적인 계획은 다음과 같습니다:
부채 확인
채권자의 증거 확인: 채권자가 제공한 모든 서류를 검토하여 채무의 유효성과 세부 사항을 확인하는 것부터 시작하세요. 이 정보를 사용하여 본인의 기록이나 이전에 주고받은 내용과 교차 확인합니다.
서류 요청: 채권자에게 연락하여 법원 판결문이나 화해 합의서 등 채무에 대한 공식적인 증거를 요청합니다. 이 단계는 10번 문서에서 권장하는 대로 채무의 신빙성에 이의를 제기하는 데 필수적입니다.
케이스 준비하기
증거 수집: 문서 2와 8에 언급된 대로 결제 영수증, 채권자가 보낸 합의서 또는 보험 서류 등 모든 관련 증거를 수집합니다.
증거 정리 및 제시: 문서 1의 조언에 따라 모든 증거를 정리하고 법정에서 제출할 수 있도록 준비하세요. 필요한 경우 결제 시도에 함께 있었던 친구나 해당 부동산의 전 세입자 등의 증인 진술을 포함시키는 것도 고려하세요.
법원 절차에 대한 이해
여러 차례의 심리에 대비하세요: 소송에서 승소할 경우 문서 7에 설명된 대로 항소 절차가 있을 수 있다는 점에 유의하세요. 필요한 경우 다시 소송을 제기할 준비를 하세요.
법원 절차에 익숙해지기: 심리 구조와 판사의 역할 등 소규모 법원의 기본 사항을 알아보세요.
소환장 및 기소장에 대한 대응
방어 진술서 제출: 채무 불이행 판결을 피하기 위해 적시에 소환에 응해야 합니다. 문서 10에서 권장하는 대로 방어 진술서에 변호 내용을 명확하게 기재하고 채무 증명을 요청하세요.
기소 거부: 문서 10에 언급된 대로 협상 기회를 활용하기 위해 항상 기소를 거부합니다.
재정 상황 고려
재정 상황 설명: 부채를 갚을 수 없는 경우, 문서 5에 설명된 대로 재정 상황을 설명하고 분할 납부 계획을 제시하세요. 부채를 해결하기 위해 합당한 노력을 기울였음을 입증하세요.
필요한 경우 변호사와 상담하세요.
법률 자문 구하기: 상황이 복잡하거나 자신의 법적 지위가 확실하지 않은 경우, 특히 다른 부채나 복잡한 문제가 관련된 경우 문서 3에서 제안한 대로 채무 조정 변호사와 상담하세요.
법원 심리 준비
정시에 도착하고, 적절한 복장을 갖추고, 필요한 모든 서류를 지참하세요. 잘 준비된 케이스의 성공적인 결과를 보려면 문서 7의 예를 참조하세요.
추가 단계를 고려하세요.
룸메이트 또는 증인에게 알리기: 채무가 공유 재산과 관련된 경우 문서 4에 설명된 대로 도움을 줄 수 있는 증인이나 룸메이트에게 알리는 것이 좋습니다.다음 단계를 따르면 소액 청구 법원 심리에 자신 있게 대응하고, 사건을 효과적으로 진술하고, 권리를 보호할 수 있습니다.
이러한 예시를 통해 DeepSeek R1의 추론 능력이 뛰어나다는 것을 알 수 있습니다. 이 사고 프로세스는 원본 법률 문서에서 결론을 도출하는 방법을 명확하게 보여줍니다:
- R1은 먼저 일관된 모델 의 세부 추론 과정에 반영된 법적 이슈를 이해하는 데 도움이 됩니다:
首先,我记得关于提前终止罚款的内容……文档 1 提到……
이 '검색 전 추론' 접근 방식을 통해 모델은 검색 전에 여러 소스의 개념을 체계적으로 연결할 수 있습니다. - 임대 계약 종료 또는 소액 청구 소송과 같은 복잡한 시나리오를 처리할 때 R1 환각이 없습니다. 를 사용하여 각 문서에 대한 이해를 명시적으로 분류하는 대신(
综合来看……
). - 마지막으로, 생성기는 결론과 출처를 연결하는 정확한 참조를 사용하여 추론을 설명합니다. 이렇게 하면 질문에서 추론, 답변으로 이어지는 명확한 연결 고리를 통해 엄격함과 접근성을 보장할 수 있습니다.
다양한 법률 쿼리를 시도한 결과, 이 모델이 원본 문서에서 정보를 추출할 수 있을 뿐만 아니라 그 내용을 학습하고 추론할 수 있다는 사실을 발견했습니다.
결론: 질문과 답변 및 요약 작업에서는R1 단계별 법적 추론의 '금광'과도 같은 자료입니다. 생성 단계에서 사용하면 거의 실망하지 않을 것입니다.
3. 엔지니어링은 여전히 중요합니다
큐 디자인
추론 능력이 뛰어나다고 해서 잘 설계된 단서 단어의 필요성이 없어지는 것은 아닙니다. 다음과 같은 경우 단서 단어에 대한 명시적인 안내가 필수적이라는 사실을 발견했습니다.
- (일부 개발) 기여 문서 참조 전체적으로 답변을 생성하세요.
- 환각 방지 "출처 인용 또는 모른다고 명시" 방식이 사용됩니다.
- 가독성을 높이기 위해 최종 답안 구조화하기 .
실험을 진행하는 동안 다음과 같은 단서를 구성했습니다:
你是一个帮助分析法律文件及相关内容的 AI 助手。在回复时,请遵循以下准则:
- 在提供的搜索结果中,每个文档的格式为 [Document X begin]...[Document X end],其中 X 表示文档的编号。
- 使用 [citation:X] 形式的引用格式,其中 X 是文档编号,并将引用放在相关信息之后。
- 在整个回答中加入引用,而不仅仅是结尾处。
- 如果信息来自多个文档,请使用多个引用,例如 [citation:1][citation:2]。
- 不是所有搜索结果都相关——请评估并仅使用相关信息。
- 对于较长的回答,请将内容结构化,以段落或部分的形式呈现,以提高可读性。
- 如果在提供的文档中找不到答案,请直接说明,而不要编造信息。
- 一些文档可能是非正式讨论或 Reddit 帖子——请根据内容调整解读方式。
- 让回答尽可能多地包含引用。
首先,在 <think> 标签中解释你的思维过程。
然后,在思维过程之后提供最终答案。
문서 청크
또한 다음과 같은 사실을 발견했습니다. 정확한 문서 검색을 위해서는 효과적인 문서 청크가 필수적입니다.. 문서를 청크화하면 각 임베딩이 특정 주제를 더 정확하게 표현하고 각 임베딩 생성에 필요한 시간을 줄이는 데 도움이 됩니다. 토큰 수량.
저희는 문장 기반 분할(NLTK를 통한)을 사용하여 문서를 청크화합니다. 또한 각 청크의 시작과 끝에는 인접한 청크와 겹치는 콘텐츠가 포함됩니다. 이렇게 하면 모델이 전체적인 맥락을 잃지 않고 부분적인 참조를 더 잘 이해할 수 있습니다. 아래는 문서 청크에 사용되는 코드입니다:
def chunk_document(document, chunk_size=2048, overlap=512):
"""使用基于句子的分割方法将文档拆分为重叠的块。"""
text = document['text']
chunks = []
# 先按句子分割
sentences = nltk.sent_tokenize(text)
current_chunk = []
current_length = 0
for sentence in sentences:
sentence_len = len(sentence)
# 如果加入此句子后会超出块大小,则保存当前块
if current_length + sentence_len > chunk_size and current_chunk:
chunk_text = ' '.join(current_chunk)
chunks.append({
'id': document['id'],
'name': document['name'],
'content': document['text'],
'chunk_start': len(' '.join(current_chunk[:-(2 if overlap > 0 else 0)])) if overlap > 0 else 0,
# 其他元数据字段...
})
# 保留最后几句话作为重叠部分
overlap_text = ' '.join(current_chunk[-2:]) # 保留最后 2 句
current_chunk = [overlap_text] if overlap > 0 else []
current_length = len(overlap_text) if overlap > 0 else 0
current_chunk.append(sentence)
current_length += sentence_len + 1 # +1 代表空格
핵심 사항 요약:
- 문자 기반 분할이 아닌 문장 기반 토큰 분할에는 NLTK를 사용하세요.
- 문서 컨텍스트는 블록 간에 겹치는 문장을 유지하여 유지됩니다.
4. 효율적이고 빠른 vLLM
법률 문서 데이터의 양이 방대하기 때문에 RAG용 임베딩을 생성하는 데 시간이 오래 걸릴 수 있습니다.
처음에 저희는 허깅페이스의 sentence_transformer
먼저 Nvidia L4 GPU에서 실행했지만 일반적인 "CUDA 메모리 부족" 오류가 발생했습니다. 먼저 Nvidia L4 GPU에서 실행했지만 일반적인 "CUDA 메모리 부족" 오류가 발생했습니다. 그 후 Nvidia A100을 사용해 보니 sentence_transformer
전체 콘텐츠를 로드하려면 57GB의 DRAM이 필요합니다. Alibaba-NLP/gte-Qwen2-7B-instruct
모델.

우리는 다음과 같이 전환했습니다. vLLM처리량이 많고 메모리 효율이 높은 LLM 추론 및 서비스 엔진입니다.
vLLM을 사용하면 표준 Nvidia L4 GPU(~24GB DRAM)에서 모델을 실행할 수 있습니다. 이에 비해 L4는 A100보다 훨씬 저렴합니다. GCP에서 Nvidia L4는 시간당 약 $0.7인 반면 Nvidia A100은 시간당 최소 $2.9입니다.
Nvidia A100(80GB DRAM)에서 vLLM과 문장 변환기를 비교하면 다음과 같습니다. vLLM은 최대 5.5배 빠르게 Qwen2 임베딩을 생성합니다!.
10,000개의 법률 문서(총 15,000개의 청크)를 처리하는 경우:
- 표준 문장 변압기 처리 시간: 약 5.5시간
- vLLM 처리 시간: 약 1시간

다음은 vLLM에서 실행하는 데 사용됩니다. Alibaba-NLP/gte-Qwen2-7B-instruct
를 사용하여 임베디드 SkyPilot YAML 구성을 생성합니다:
name: compute-legal-embeddings
resources:
# vLLM 需要 ~24GB DRAM GPU,SentenceTransformer 需要 57GB
accelerators: {L4:1, A100:1}
envs:
START_IDX: ${START_IDX}
END_IDX: ${END_IDX}
file_mounts:
/output:
name: my-bucket-for-embedding-output
mode: MOUNT
setup: |
pip install torch==2.5.1 vllm==0.6.6.post
...
envs:
MODEL_NAME: "Alibaba-NLP/gte-Qwen2-7B-instruct"
run: |
python -m vllm.entrypoints.openai.api_server \
--host 0.0.0.0 \
--model $MODEL_NAME \
--max-model-len 3072 \
--task embed &
python scripts/compute_embeddings.py \
--start-idx $START_IDX \
--end-idx $END_IDX \
--chunk-size 2048 \
--chunk-overlap 512 \
--vllm-endpoint http://localhost:8000
5. 임베딩에 100시간 이상 걸리지 않도록 SkyPilot을 사용하여 병렬 처리하세요!
단일 L4 GPU에서 법률 문서 임베드를 생성하는 데 100시간이 걸립니다. 스팟 인스턴스를 활용하면 시간과 비용을 획기적으로 줄일 수 있습니다:
(사물의) 이름 | 원래 시간 | 100가지 스팟 예시 |
---|---|---|
횟수 | 100시간 | 1시간(100배 가속) |
(제조, 생산 등) 비용 | $70.1 | $28.2(2.4배 절약) |

결과: 더 이상 임베드를 생성하기 위해 며칠을 기다릴 필요가 없습니다. 대규모 데이터 세트에도 불구하고 프로토타입에서 프로덕션으로 빠르게 이동하면서 작업을 동적으로 확장할 수 있습니다.
평결에 도달하기
구성 (STH 추상) DeepSeek R1 RAG 몇 가지 핵심 사항을 알아보세요:
- Qwen2와 같은 특수 임베딩 모델로 검색 기능을 강화하세요.
- R1의 추론 기능은 생성 단계에서 복잡한 법률 쿼리를 처리하는 데 활용됩니다.
- (단서 단어) 엔지니어링은 여전히 인용을 제어하고 콘텐츠를 구성하는 데 핵심적인 역할을 합니다.
- vLLM으로 추론 효율을 높여 속도를 크게 향상하세요.
- 클라우드와 자체 인프라에서 AI 컴퓨팅을 확장하여 컴퓨팅 시간과 비용을 절감하세요.
더 자세히 알고 싶으신가요?
- RAG 구성 가이드:GitHub 리포지토리
- SkyPilot으로 AI 작업을 확장하세요:SkyPilot 문서
주의: RAG 시스템은 법률 조사 및 분석을 위한 강력한 도구이지만 자격을 갖춘 법률 전문가를 대신할 수는 없습니다. 그 결과를 법률 자문으로 간주해서는 안 됩니다.
© 저작권 정책
기사 저작권 AI 공유 서클 모두 무단 복제하지 마세요.
관련 문서
댓글 없음...