NIPA-ORACLE #14.

HyunJunSon·2025년 10월 17일

NIPA-ORACLE

목록 보기
18/28

1. unstructuredpdfloader metadata


{
    'type': 'Title' | 'Paragraph' | 'ListItem' | 'Table' | 'Image',
    'page_number': 3,
    'coordinates': (x1, y1, x2, y2),
    'filename': 'sample.pdf'
}

2. 도커파일 라벨

  • 누가 작성했는지 표시 가능

3. init_database.sql

  • db 세팅을 위한 DML, DDL 설정을 해두는 파일
  • 임베딩 모델의 차원이 다르면 DB 도 별도로 작성해야 함
    ex) 1536 차원, 1024차원 두개 있으면 DB table도 두개 필요함
    같이 쓸수 없다.
    내적이 불가능
  • vscode continue(extension) 이용하면 폐쇄망에서 사용가능한 llm이용가능

4. 파이썬 실행파일

# dockerrun.py
import uvicorn

if __name__ == '__main__' :
		uvicorn.run('app.main:app', host=0.0.0.0, port=12900, log_level='debug'

5. 일반 DB 의 경우 시간이 미국기준으로 시간이 세팅되어 있음 / timezone api 이용해서 한국으로 세팅해야됨

6. vars(), locals() 유용

  • 함수 내에서 locals()를 이용하거나
  • 객체의 vars() 를 활용하면 유용하다.

def test(test1: int, test2: int) -> int :
    print(locals()) # {'test1': 1, 'test2': 2}
    return test1 +test2
  
print(f"test method call{test(1,2)}")

class Test :
    def __init__(self, test1: int, test2: int) :
        self.test1 = test1
        self.test2 = test2

      
t = Test(1,2)


print(vars(t))
test(**vars(t))

7. 대용량 input 데이터 분기 처리 요령

  • lg 프로젝트시 input 데이터가 8만자 넘으면 무조건 에러가 났었음
  • 2만자 기준으로 2만자 이하는 그대로 리턴
    • batch_size 옵션 주면 병렬로 조금 더 빠르게 가능
  • 5만자 이상
    • use_background : True 모드 사용

8. 청킹 성공 비율에 따라 상태값을 분기해서 구현함

청킹 성공 비율에 따라서 상태값을 분기해서 구현함
1. 90% 이상 >
2. 80%이상 >

9. *, ** 정리

10. 파이썬 로깅 처리방법


import logging

logger = logging.getLogger("myapp") 
logger.setLevel(logging.DEBUG)  # 전체 로깅 레벨을 설정

# 콘솔로 출력하는 핸들러
stream_handler = logging.StreamHandler()

# 파일로 저장하는 핸들러
file_handler = logging.FileHandler("app.log")

# 포매터 지정
formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")
stream_handler.setFormatter(formatter)
file_handler.setFormatter(formatter)

# 로거에 핸들러 등록
logger.addHandler(stream_handler)
logger.addHandler(file_handler)

logger.info("로그 테스트")

11. 모델의 경우 클래스로 구분해서 구현해두고, 별도의 라우터도 AI-Agent 로 만들어서 라우터 자체도 agent를 이용해서 함

12. glob

13. chain of thought

  • Chain of Thought(사고의 연쇄)은 복잡한 문제를 단계적으로 추론하도록 언어모델(LLM)을 유도하는 기법임.
  • 일반적으로 LLM은 질문에 대해 바로 답을 내놓음. chain of Thought를 사용하면 모델이 다음과 같이 중간 추론 과정(reasoning steps) 을 명시적으로 생성하도록 프롬프트를 설계한다.
  • CoT Prompting: 사고의 연쇄를 유도하는 프롬프트

14. UpstageLayoutAnalysisLoader

UpstageLayoutAnalysisLoader는 Upstage에서 제공하는 문서 레이아웃 분석 도구로, PDF나 이미지 문서의 구조(제목, 단락, 표, 이미지 등)를 자동으로 파싱하고 분석하여 구조화된 데이터로 변환해주는 로더입니다. LangChain과 같은 AI 애플리케이션에서 문서를 처리할 때 메타데이터와 함께 텍스트를 추출하는 데 사용

15. 프로젝트 절차

  1. 요구사항정의서(Requirement Definition) 작성
  • 과업레벨/업무그룹/요구사항ID/요구사항분류/시스템/요구사항명/요청자/상태/최초요청일자/최종수정일자
  1. User 사용 flow → 잘못되면 버튼연동 잘못될수 있다.
  2. 와이어프레임 - 스토리보드 작성 (Figma)

16. 청킹 시각화 도구

17. IA(Information Archietecture)

18. 디렉토리명으로 파일 찾는 리눅스 명령어

find ~ -name "langCh-env" -type d 2>/dev/null | head -

19. 트러블 슈팅

  • 이력서, 자격증 사항 기반 챗봇 구현
  • 이미지데이터는 제대로 검색되지 않는다.( 아래문서를 기반으로 재시도)

https://www.ncloud-forums.com/topic/497/

20. llm 속도비교

  • 입력항목/ 모델/ 속도/ 결과
profile
즐겁게 공부하고 사람들에게 도움을 주는 개발자가 되고 싶습니다.

0개의 댓글