PDF 문서 로드 및 처리def load_pdf(): """PDF 문서 로드""" if not PDF_PATH or not os.path.exists(PDF_PATH): raise FileNotFoundError(f"PDF 파일을 찾을 수 없습니다: {PDF_PATH}") print("PDF 파일 로드 중...") return PyMuPDFLoader(PDF_PATH).load()기술 설명:PyMuPDFLoader: LangChain에서 제공하는 PDF 로더로, PDF 파일을 텍스트 형태로 추출예외 처리: 파일이 없는 경우를 대비한 FileNotFoundError 처리PDF 문서 벡터화 및 저장def create_pdf_vectorstore(): """PDF 문서를..
1. BM25 키워드 검색 (Lexical Search)BM25 키워드 검색은 Lexical Search(어휘 검색) 방식 중 하나로, 문서의 단어 빈도와 희귀도를 기반으로 검색 결과를 랭킹하는 알고리즘.Lexical Search는 문서 내 단어(lexicon)의 정확한 매칭을 기반으로 검색을 수행하는 방식.BM25 키워드 검색의 특징정확한 단어 매칭을 기반으로 검색단순 TF-IDF보다 검색 성능이 향상됨짧은 문서와 긴 문서를 균형 있게 평가 (문서 길이 보정)Elasticsearch, Solr 등 주요 검색 엔진에서 기본 알고리즘으로 사용됨데이터 양이 많을수록 검색 성능이 향상됨한계점동의어나 의미적으로 유사한 단어를 인식하지 못함. (예: "AI"와 "인공지능"을 다르게 인식) 자연어 의미를 이해하지 ..
자료를 ai에게 주고 일을 시키면 60퍼센트 정도의 원하는 답변을 받는다면 LAG를 사용하면 80퍼센트까지 끌어올릴 수 있어서 사용한다고 한다. 그리고 항상 염려하는 할루시네이션의 확률이 DB기반으로 나와서 대폭 감소하는 이점이 있다고 한다. 또한 ai를 사용하면 업무가 엄청 편리해지는 대신 해당 ai 회사에 회사 내부 자료가 저장될 수 있는 위험이 따르는데 해당 기술을 사용하면 DB를 자체적으로 사용하고 질문만 쓸 수 있어서 좋다고 한다. 결국 좀 더 신뢰성있는 더 좋은 품질, 나만의 챗봇을 위해 공부해야하는 것 같다.
Git 협업 시 자주 사용하는 명령어 정리1. 브랜치 관련새 브랜치 생성 후 이동git checkout -b 브랜치이름git switch -c 브랜치이름 # 최신 Git에서 권장브랜치 이동git checkout 브랜치이름git switch 브랜치이름 # 최신 Git에서 권장로컬 브랜치 목록 확인git branch원격 브랜치 목록 확인git branch -r모든 브랜치 목록(로컬 + 원격) 확인git branch -a브랜치 삭제 (로컬)git branch -d 브랜치이름 # 병합된 브랜치만 삭제 가능git branch -D 브랜치이름 # 강제 삭제브랜치 삭제 (원격)git push origin --delete 브랜치이름2. 원격 저장소 관련원격 저장소 정보 확인git remote -v원격 저장소 추..
데이터를 가져다가 쓸 때 가끔 누락값이 있는 경우가 있다. 그럴때 GPT를 활용해서 빈 데이터를 채우거나 내용을 보강하는 것이 가능하다. 예를 들어:빈 데이터 채우기:import openaifrom dotenv import load_dotenvimport osload_dotenv()openai.api_key = os.getenv('OPENAI_API_KEY')def fill_missing_data(recipe_name, missing_field): prompt = f"""레시피 '{recipe_name}'의 빠진 {missing_field}를 생성해주세요. 형식은 다음과 같이 해주세요: - 조리시간이 빠진 경우: '30분'과 같은 형식 - 재료가 빠진 경우: '재료: 감자 2개, 양..
OpenAI API에서 멀티턴 대화는 messages 배열을 통해 구현됩니다.이전 대화 내용을 누적해서 전달함으로써 대화의 맥락(context)을 유지할 수 있습니다.예시 코드:import openaifrom openai import OpenAIfrom typing import Listclient = OpenAI()class Conversation: def __init__(self): self.messages: List[dict] = [ {"role": "system", "content": "당신은 요리 전문가입니다."} ] def get_response(self, user_input: str) -> str: # 사용자 메시지 추가 ..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.