FastAPI와 LLM을 활용한 AI 기반 채용 공고 검색 API 구축 가이드
🤖 AI 추천
백엔드 개발자, Python 개발자, AI/ML 엔지니어, 풀스택 개발자
🔖 주요 키워드
핵심 기술
이 글은 FastAPI, PostgreSQL, LangChain, 그리고 LLM(Large Language Models)을 활용하여 자연어 쿼리로 직무를 검색할 수 있는 고급 AI 기반 채용 공고 검색 API를 구축하는 방법을 다룹니다.
기술적 세부사항
- 핵심 프레임워크: FastAPI를 사용하여 웹 API를 구축합니다.
- 데이터베이스: PostgreSQL을 Docker Compose와 함께 사용하여 데이터베이스로 활용합니다.
- ORM 및 마이그레이션: SQLAlchemy와 Alembic을 사용하여 ORM 모델 및 마이그레이션을 관리합니다.
- AI 통합: LangChain과 OpenAI를 활용하여 LLM 기반의 필터 생성을 구현합니다.
- 모듈화된 코드: 유지보수를 용이하게 하는 모듈식 코드 구조를 채택합니다.
- AI 기반 검색 엔드포인트 (
/jobs-ai-search
):- 사용자는 자연어(예: "서울에 있는 원격 근무 시니어 개발자 포지션")로 검색할 수 있습니다.
- 백엔드는 LLM을 사용하여 사용자 쿼리를 해석하고 구조화된 필터(JSON 형식)를 생성합니다.
- LLM은 동의어, 문맥, 의도를 파악하여 사용자가 정확한 필드명을 알지 못해도 검색이 가능하도록 합니다.
- 회사 규모 필터링:
- "small", "medium", "large", "enterprise"와 같은 비즈니스 용어로 회사 규모 필터링이 가능합니다.
- 서비스는 이러한 용어를 직원 수 범위로 자동 매핑합니다 (예: "medium" → 51-250명).
- 유연하고 조합 가능한 필터:
- 직무, 회사, 위치, 고용 형태, 경력 수준, 원격/하이브리드, 산업, 연봉 범위 등 다양한 필터를 지원합니다.
- Django ORM에서 영감을 받은 이중 밑줄(
__
) 구문(예:salary__gte
,title__ilike
)을 사용하여 고급 쿼리를 지원합니다. - 여러 필터를 조합하여 정밀한 검색이 가능합니다.
- LLM 필터 생성 프로세스:
get_llm_job_filters
함수는 사용자 쿼리를 받아 LLM(GPT-4)에 전달합니다.- LangChain의
LLMChain
,PromptTemplate
,JsonOutputParser
를 사용하여 LLM이JobFilter
Pydantic 모델에 맞는 JSON 형식의 필터를 생성하도록 합니다. - 생성된 필터 객체에서 유효한 값(None, 0, 빈 문자열, 빈 리스트/딕셔너리 제외)만 추출하여 반환합니다.
- SQLAlchemy 필터 적용:
query_dict_to_sqlalchemy
함수는 LLM이 생성한 필터 딕셔너리(filter_dict
)를 SQLAlchemy 쿼리 객체에 적용합니다.__ilike
,__gte
,__lte
와 같은 연산자를 지원하여 유연한 데이터베이스 쿼리를 생성합니다.
개발 임팩트
- 향상된 사용자 경험: 사용자는 복잡한 검색 인터페이스 대신 자연어로 원하는 정보를 쉽게 찾을 수 있습니다.
- 개발 효율성 증대: LLM을 통해 필터 생성을 자동화하여 개발자가 겪는 복잡성을 줄이고 비즈니스 로직에 집중할 수 있게 합니다.
- 유연한 시스템: 새로운 필터나 검색 조건이 추가되어도 핵심 로직 변경 없이 확장이 용이합니다.
- 최신 기술 활용: FastAPI, LLM, PostgreSQL 등 현대적인 스택을 사용하여 기술 트렌드를 반영한 애플리케이션을 구축할 수 있습니다.
커뮤니티 반응
본문에서 특정 커뮤니티 반응은 언급되지 않았습니다.
📚 관련 자료
fastapi
FastAPI 프레임워크 자체의 GitHub 저장소로, 본문에서 핵심 웹 프레임워크로 사용된 FastAPI의 구현체 및 관련 예제를 참고할 수 있습니다.
관련도: 95%
langchain-core
LangChain의 코어 모듈 저장소로, 본문에서 LLM 통합 및 프롬프트 관리에 사용된 LangChain 라이브러리의 핵심 기능을 이해하고 활용하는 데 도움이 됩니다.
관련도: 90%
SQLAlchemy
Python의 대표적인 ORM 라이브러리인 SQLAlchemy의 저장소로, 본문에서 데이터베이스 모델링 및 쿼리 생성에 사용된 SQLAlchemy의 동작 방식과 기능을 이해하는 데 필수적입니다.
관련도: 85%