목록분류 전체보기 (132)
토니의 연습장
vectorDB에 넣기 위해 중복문장을 제거할때,unique 문장을 뽑아내면서 리스트를 순회하지 않고 딕셔너리를 순회하며 키를 True로 넣는 이유unique_texts = {}docs_processed_unique = []for doc in docs_processed: if doc.page_content not in unique_texts: unique_texts[doc.page_content] = True docs_processed_unique.append(doc)이 코드에서 리스트 대신 딕셔너리를 사용하여 중복 여부를 확인하고, 키를 True로 넣는 이유를 설명해 드리겠습니다.🛠️ 1. 리스트와 딕셔너리의 성능 차이✅ 리스트 조회 (O(n))리스트에서 중복 여부를 확..
1. gguf -> ollama변환 도구 확인:gguf는 주로 llama.cpp 등에서 사용되는 모델 포맷입니다. 커뮤니티에서는 gguf 모델을 safetensors나 Hugging Face 형식으로 변환하기 위한 스크립트나 도구가 공유되고 있으므로, GitHub 이슈나 관련 리포지터리를 먼저 검색해보시기 바랍니다.예시 변환 (가상의 명령어):만약 변환 스크립트가 있다면 아래와 같이 실행할 수 있습니다.이 과정에서 모델 가중치와 토크나이저 파일이 Ollama에서 사용할 수 있는 형식(예: safetensors 파일들)으로 생성되어야 합니다.python convert_gguf_to_safetensors.py --input model.gguf --output /path/to/converted-model- Y..
# db에 없는 문서만 추가 new_chunks = [] for chunk in chunks_with_ids: if chunk.metadata["id"] not in existing_ids: new_chunks.append(chunk) if len(new_chunks): print(f"👉 Adding new documents: {len(new_chunks)}") new_chunk_ids = [chunk.metadata["id"] for chunk in new_chunks] db.add_documents(new_chunks, ids=new_chunk_ids) db.persist() 1. 동작 ..
1. Document Load 2. Document Split 3. Embedding Function 선언 ex1) ex2) 4. vectorDB 생성 / 문서 추가 참고) 경로:페이지:청크 5. DB 업데이트 6. RAG serve : Local / via Cloudex) Local : ollama Cloud : HuggingFace 7. RAG test (간이평가)Unit Test 활용 (PyTest) 8. RAG evalution (세부평가) 참고) https://youtu.be/2TJxpyO3ei4
메모리 요구 사항ex) llama27B(70억 파라미터) 모델은 일반적으로 최소 8GB의 RAM이 필요합니다.13B(130억 파라미터) 모델은 일반적으로 최소 16GB의 RAM이 필요합니다.70B(700억 파라미터) 모델은 일반적으로 최소 64GB의 RAM이 필요합니다.만약 더 높은 양자화(quantization) 수준에서 문제가 발생한다면, q4 모델을 사용하거나 많은 메모리를 사용하는 다른 프로그램을 종료해보세요.모델 변형(Variants)Chat 모델은 챗/대화(use case)에 맞춰 파인튜닝된 모델입니다. Ollama에서 기본값으로 사용되며, 태그 탭에서 -chat이 붙은 모델들이 여기에 해당합니다.예시: ollama run llama2Pre-trained 모델은 챗 파인튜닝이 적용되지 않은 모..
현재 Ollama가 기본적으로 제공하는 모델들 중에서 영어 “임베딩 용도”로 가장 성능이 좋으면서도 RTX 4090(24GB VRAM) 단일 GPU로 실용적으로 구동 가능한 것은 대체로 Llama 2 13B 계열 모델입니다.배경: Ollama와 임베딩Ollama의 모델 구성Ollama는 주로 Llama 2, Code Llama, Falcon, Mistral, Wizard 등 여러 GGML 포맷의 모델을 지원합니다.그러나 “임베딩 전용”으로 특화된 모델(예: Sentence-Transformer류)은 공식 레포지토리에 크게 언급되어 있지 않고, 대체로 생성형 LLM(예: Llama 2) 위주입니다.Ollama는 내부적으로 ollama embed 같은 명령을 통해 LLM에서 임베딩 벡터를 추출할 수 있으나,..
RAG 시스템을 구축했을 때, pdf 페이지를 로드하고 임베딩해서 저장하고 있다가 이를 기반으로 답변할 때 답변 내용의 출처 페이지 번호도 답하게 하면 실제 원문 pdf 파일의 페이지와 잘 일치하지 않을 때가 있습니다. 이 때, 이를 잘 일치하게끔 하려면 각 단계마다 어떤 라이브러리를 쓰는 게 좋을까요? 참고로 RAG 주요 단계로는 pdf 문서 load, 문서/텍스트 split, embedding, DB store 단계들이 있습니다.RAG 단계를 거치면서 원문의 페이지 번호를 유지하려면, 각 단계에서 페이지 번호 등 메타데이터를 함께 관리할 수 있는 방식을 택하는 것이 중요합니다. 보통 다음과 같은 순서로 RAG 파이프라인을 구성합니다.1) PDF 문서 로드(Loading)핵심 포인트PDF에서 텍스트를 ..
