🤯 골치 아픈

Поделиться
HTML-код
  • Опубликовано: 30 сен 2024
  • 📝 자료: link.teddynote...
    🤖 디스코드 채널
    / discord
    📘 랭체인 튜토리얼 무료 전자책(wikidocs)
    wikidocs.net/b...
    ✅ 랭체인 한국어 튜토리얼 코드저장소(GitHub)
    github.com/ted...
    ⭐️ 강의 홍보 ⭐️
    LangChain + ChatGPT + Streamlit 강의(VOD 강의)
    아래에 사전 등록을 하시면 강의 오픈 후 알림을 발송해 드릴 예정이며, 할인 쿠폰도 같이 제공해 드립니다.
    📍 LangChain + ChatGPT + Streamlit 강의 사전알림 신청 🙏🙏
    링크: forms.gle/buoX...
    #langchain #rag
    ---
    📘 랭체인 한국어 튜토리얼(무료 전자책): wikidocs.net/b...
    📝 테디노트(깃헙 블로그) : teddylee777.gi...
    💻 GitHub 소스코드 저장소: github.com/ted...
    🍿 LLM 프로젝트: llm.teddynote.com

Комментарии • 39

  • @teddynote
    @teddynote  4 месяца назад +1

    00:25 오늘의 주제 -PDF-
    02:04
    04:07 그래프(차트)
    05:13 이미지
    06:41 질문1: 표 추출(DataFrame, Excel)
    09:01 질문2: 요소를 뽑을 때 위치정보
    09:23 차트에 붙어있는 텍스트처리(x축, y축, 제목)
    10:05 다이어그램, 도형 인식
    10:59 단락 구분
    13:39 다중컬럼(2단)
    14:14 불필요한 정보 제거(license)
    15:10 OCR
    15:46 주요 키워드 검색 안되는 문제
    21:24 랭스미스 허브에서 좋은 프롬프트 고르기 꿀팁
    22:24 질문3: FAISS Retriever
    22:47 질문4: Ensemble Retriever
    24:05 문서검색에 에이전트 활용
    25:12 PDF 기반 Q&A 챗봇 성능이 안나와요 ㅠ
    28:26 날짜검색
    31:54 문서 내 이미지를 텍스트로 설명구로 변환하여 저장?
    33:16 PDF 내 삽입된 요소 위치를 잘 유지하면서 내용 변경 방법
    34:32 Llamaparse
    35:11 Upstage
    36:04 질문5: 표에 제목을 매칭하여 DB 에 저장할 수 있나요?
    36:47 기존 DB 에 PDF 추가하는 방법
    37:20 차근차근 PDF 정복해요!
    37:55 PDF 개발사의 개발자 분들 모셔서 인터뷰 진행할 예정입니다!!

  • @teddynote
    @teddynote  4 месяца назад +2

    22:47 내용 정정해야할 부분이 있습니다! BM25Retriever 랑 Dense Retriever 를 같은 DB 를 바라볼 수 는 없습니다(인덱싱 방식이 다르기 때문입니다). 각각 별도의 DB를 만들어 주는 것이 맞습니다.

  • @가갸거겨-m8u
    @가갸거겨-m8u 2 месяца назад +2

    테디님 질문이있습니다 pdf는 아니지만 엑셀문서를 가져올때 어떤식으로 가져오나요? row 가 2000줄이 넘다보니까 한줄씩 가져오는게 맞나 생각이 들어서요 한줄씩 가져오니까 임베딩 한 것을 다시 찾아올때 그문서만 편향되서 찾아오고 나머지 문서에서는 찾지 않는 다는 생각이 들어서 이 부분에 대해 인사이트가 있을까요?

    • @teddynote
      @teddynote  2 месяца назад +1

      엑셀은 저는 크게 두 가지 방식으로 처리하는데요
      1. dataframe 으로 가져와서 쿼리로 처리하는 경우
      2. 말씀하신 row 단위로 읽어와서 GPT에 텍스트 형식 으로 넣는 경우 인데요.
      후자의 경우는 그냥 넣어주시는 것보다 컬럼 정보를 입혀서 넣어주시는 것이 좋아요 예를 들어
      ```
      16홍길동male
      17김영희female
      ```
      위와같이 행단위로 묶되 XML 형식으로 만들어서 주입하면 꽤나 잘 참고하여 답변합니다^^

  • @wooseok-b9l
    @wooseok-b9l 4 месяца назад +2

    안녕하세요, 영상 잘 보고 있습니다. 사내 보안환경에서 로컬 LLM + RAG 구동을 시도해보고 있는데 pdf나 word 파일에 drm이 걸려있어서 파이썬에서 조회가 어렵더라구요.. 이 경우에 파일들을 drm이 걸리지 않는 txt로 바꿔서 파이썬으로 읽어오는 방법을 생각하고 있는데 혹시 더 좋은 방안이 있을지 의견 여쭙습니다 ! 차선책으로는 사외 환경에서 open 데이터로 벡터 DB를 구축 한 다음 해당 DB를 사내로 복사하는건데 두 방안 모두 실현 가능성이 있는지 정보가 거의 없는 것 같네요 ㅠㅠ

    • @teddynote
      @teddynote  4 месяца назад

      네~ 마크다운 형식의 파일로 변환도 가능한지 한 번 확인해 주세요 (.txt 보다는 마크다운 형식의 글이 좋습니다)
      정리하자면 다음과 같습니다.
      1. DRM 을 파이썬 코드로 해제하여 파일 open
      2. 영상에서 언급한 PDF -> Markdown 변환기를 써서 한 번 변환해 보시고요. 품질이 별로면 후처리를 통해 좀 더 다듬어 주세요! 원하는 결과가 잘 나올때까지 최대한요!
      3. 마크다운을 DB 에 저장 (이때 DB 는 클라우드 DB 보다는 우선 local DB (Chroma, FAISS) 로 저장하여 잘 동작하는지 먼저 확인해 보세요!
      4. retriever 로 조회

  • @obee8222
    @obee8222 4 месяца назад +2

    진짜 현업에서 필요로 하는부분을 알려주시니깐 테디님의 열정에 놀랍고 감사드립니다.

    • @teddynote
      @teddynote  4 месяца назад

      알아봐 주셔서 정말 감사드립니다🙏🙏

  • @유영재-c9c
    @유영재-c9c Месяц назад +1

    MarkdownTextSplitter를 쓰면 chunk_size와 오버랩을 설정해도 알아서 시맨틱하게 나눠주나요? 그럼 좋을 것 같은데 ㅠ

    • @teddynote
      @teddynote  Месяц назад

      MarkdownHeaderTextSplitter 는 Header 와 글의 body 에 해당하는 Text 를 분할합니다~

  • @바오-c3p
    @바오-c3p 4 месяца назад +1

    영상 잘 보고 있습니다! 혹시 한국어 교육 데이터를 학습 시키려고하는데 추천 영상같은 것이 있을까요? 없다면 혹시 방법을 간략하게 남겨주시면 정말 감사드리겠습니다!!

    • @teddynote
      @teddynote  4 месяца назад

      학습이라면 파인튜닝 말씀하실까요?
      만약에 파인튜닝이라면 내용이 방대해서 제가 링크를 남겨 놓을테니 링크 안의 내용을 한 전 참고해봐주세요~
      github.com/davidkim205/komt

  • @민병철-r5l
    @민병철-r5l 4 месяца назад +1

    너무 감사합니다 ㅠㅠ 노하우를 이렇게 공개 해주셔서 항상 챙겨 보고있습니다! 질문이 있는데요.
    앙상블 검색에서 사용하는 bm25리트리버를 사용하는경우 띄어쓰기 단위로 인덱스를 만들고 tf/idf처럼 활용하는 걸로 알고있습니다. 근데 랭체인에서 제공하는 bm25 검색을 사용하면 따로 텍스트를 물리적인 db에 저장하지 않는 것 처럼 보이는데 맞을까요?

    • @teddynote
      @teddynote  4 месяца назад +1

      bm25리트리버도 저장된 DB 에서 조회합니다^^
      먼저, BM25 Retriever 를 생성하기 전에 DB를 만들고 여기에 BM25 Retriever 를 물리면 됩니다!

  • @imnaclub
    @imnaclub 4 месяца назад +2

    으헝 어디서 부터 시작해야 할지 모르겠어여 ㅠㅠㅠ

    • @teddynote
      @teddynote  4 месяца назад +3

      맞네요.. 그게 문제네요.. 제가 영상이나 커뮤니티 게시글로 빠르게 정리하여 공유 드릴께요 ㅜㅜ

  • @akrja4
    @akrja4 4 месяца назад +3

    잘 봤습니다! 하나 질문이 있습니다. 1.앙상블 리트리버를 쓰면 Vector retreiver+BM25 Retriever인데요. BM25리트리버 예시를 보면 텍스트에 대해서만 하던데, 만약 채팅으로 검색할시에 벡터 리트리버는 컬렉션에서 유사도를 조회하면 되는데요. BM25리트리버는 질문에 따라 어떤 문서를 조회해야하는지 어떻게 알수있을까요? 만약 DB에 문서가 들어가있다면 특정 쿼리를 날려서 텍스트를 가져와야 할텐데,, 질문에 따라 어떤 쿼리를 날려야 할지를 모르면 풀스캔을 하게되는거 아닌가 싶습니다. 또,만약 문서의 크기가 너무 크다면 BM25리트리버 때문에 답변 속도가 늦어질수도 있을까요? 2.만약 앙상블 리트리버를 쓰기위해 벡터디비에 문서를 넣었더라도, BM25 리트리버를 따로 갖고 있어야 한다면, 결국 별도의 디비가 또 필요한데요. 이러면 벡터DB 전용 DB(Qdrant,Milvus) 등을 쓰기에 너무 불편하지 않을까요? MongoDB,Postgre,redis가 속도는 느려도 더 관리하기 쉬울수는 있겠네요?~ 승자가 누가 될지 궁금해서 어떻게 생각하시는지 궁금해서 여쭙습니다

    • @teddynote
      @teddynote  4 месяца назад +1

      우선, 날카로운 질문과 실제 현업에 도입할 때 고려해야 하는 현실적인 고민(특히, 유사도 검색 결과확인이나 속도 문제등) 주셔서 감사합니다!
      1. 어떤 문서를 조회했는지 확인: LangSmith 로 쉽게 tracing 이 가능하기 때문에 Query 별로 각각의 retriever 가 조회한 문서의 단락을 쉽게 확인이 가능합니다.
      BM25retriever는 단순히 텍스트의 문자적 일치만을 고려하는 것이 아니라, 검색어의 중요성(어떤 단어가 문서 집합 전체에서 얼마나 희귀하게 등장하는지)과 문서 내에서의 검색어 빈도, 그리고 문서의 길이를 종합적으로 고려합니다. 인덱싱이 잘되어 있는 경우(optimal 한 chunk 단위로 잘 저장되어 있고, vector DB 가 이를 잘 인덱싱 했다고 가정) 풀스캔을 한다고 볼 수는 있지만 그렇다고 속도가 엄청나게 느려서 못쓸 정도다 까지는 아닐 것 같습니다 (이를 잘 처리하는 분산 처리가 잘되는 DB도 고려할 수 있습니다. 만약에 문서의 양이 많다면 scalability 까지 고려하여 DB 선택을 해야할 것입니다)

    • @teddynote
      @teddynote  4 месяца назад +1

      2. DB 선택시 다양한 "상황"을 고려하여 선택하기 때문에 어느 부분에 더 중요도를 놓고 고려하느냐에 따라 DB 선택을 할 수 있는데요. 수십개의 DB 각각의 장단점과 trade-off 가 존재하기 때문에 딱 명료하게 이게 좋다고 결론내기는 쉬운 문제는 아닌 것 같습니다. "문서의 양이 얼마나 많나", "조회 속도", "얼마나 자주 insert 가 되는지", "조회는 얼마나 자주하는지", "on-prem vs cloud" 등등의 상황들을 종합적으로 판단해야 하는데요. 기존에 Vector DB 들의 벤치마크 결과나 trade-off 요소들을 고려하여 "최고" 보다는 "최선"의 선택을 해야하는 것 같습니다.
      이 부분은 제가 결론을 내기에는 어려운 문제인 것 같아서, 보다 잘 정리된 블로그 자료 링크를 남겨 놓겠습니다. 요소별로 비교가 되어 있으니 한 번 참고해 보시는 것을 추천 드립니다^^
      thedataquarry.com/posts/vector-db-4/#6-sparse-vs-dense-vector-storage

    • @akrja4
      @akrja4 4 месяца назад +1

      @@teddynote 친절하고 상세한 답변 정말 감사드립니다! 다른것은 다 이해가 됐는데 BM25리트리버에서, (optimal 한 chunk 단위로 잘 저장되어 있고, vector DB 가 이를 잘 인덱싱 했다고 가정) 이라는 부분에서 이해가 좀 어렵네요 ㅎㅎ.. BM25리트리버가 벡터 디비와 연계되는 부분이 있을까요? 앙상블 리트리버가 저는 각각 리트리브를 하고 그것을 조합하는것이라 생각했는데 말씀하신것을 보면 로직이 다른것같습니다! BM25리트리버가 벡터디비에서 인덱싱이 중요한가보군요

    • @akrja4
      @akrja4 4 месяца назад +1

      @@teddynote 아 그리고 마지막으로 질문드립니다!!(질문 많아 죄송합니다) 만약 앙상블 리트리버를 쓰기 위해 문서나(PDF,File,json)을 갖고 있는다면 CSV,PDF 등 랭채인에서 제공하는 Loader들(pymupdf) 등을 그대로 쓰기 위해서는 DB에 넣기 보다는 원본 파일을 그대로 가지고 있는게 편할것 같은데, 이를 그냥 DB에 넣으시는지요?.. s3-glue-athena로 s3의 url을 참조하는 db를 구축해야하나 고민이 있는데 테디노트님은 파일들을 어떻게 관리하시는지 궁금합니다!

    • @teddynote
      @teddynote  4 месяца назад +1

      @@akrja4 아 네~ BM25 알고리즘을 모든 DB단에서 지원하는 것은 아니지만 지원하는 DB가 있어서요. 그걸 기준으로 이해해 주시면 되겠습니다. 예를 들어 elasticsearch, weaviate 요. 아예 하이브리드 서치를 지원하는 DB 도 많아서 그런 디비를 쓰면 사용성이 더 편하긴 합니다!

  • @케냐더블
    @케냐더블 4 месяца назад +1

    안녕하세요, 곧 공개되는 강의 질문드리고싶은데 따로 질문남길만한 곳이 없어 여기 남깁니다..ㅜ
    LangChain + ChatGPT + Streamlit 강의라 하셨는데 chatGPT 가 assistant API 일까요?

    • @teddynote
      @teddynote  4 месяца назад +1

      chatgpt assistant api 는 다루지 않고요 대신 상위호환버전인 Agent 를 심도있게 다룹니다^^

    • @케냐더블
      @케냐더블 4 месяца назад

      @@teddynote 감사합니다 기다려지네용

  • @차승창-f2t
    @차승창-f2t 4 месяца назад +1

    안녕하세요. 혹시 대기업 출강 한 번 오실 생각 없으신가요....

    • @teddynote
      @teddynote  4 месяца назад

      teddylee777@gmail.com 메일 주시면 감사드리겠습니다🙏

  • @래그잘하고싶당
    @래그잘하고싶당 2 месяца назад +1

    해당 예제 노트북 파일은 어디서 볼 수 있나요?

    • @teddynote
      @teddynote  2 месяца назад +1

      해당 노트북 파일은 내부 강의용으로만 공유 드리고 있습니다!

  • @user-on4zl9jm4x
    @user-on4zl9jm4x 4 месяца назад +1

    항상 좋은 영상 감사합니다!

    • @teddynote
      @teddynote  4 месяца назад

      시청해 주셔서 감사합니다🙏

  • @holyboundary
    @holyboundary 4 месяца назад +1

    잘 봤습니다 고맙습니다 ^^

    • @teddynote
      @teddynote  4 месяца назад

      감사합니다🙏