Skip to content

Latest commit

 

History

History
208 lines (161 loc) · 5.69 KB

File metadata and controls

208 lines (161 loc) · 5.69 KB

ASKu AI API

Dev Environment Setting

프로젝트를 진행하기 위해 다음과 같은 Setup이 필요합니다.

  1. Docker Setup
  2. Environment Setup
  3. VectorDB Setup
  4. Django Setup

1. Docker Setup

Local Redis-stack Docker Container 환경을 필요로 합니다. Local Docker Setup과 관련된 절차는 Notion: Docker Setting을 확인해주세요.

2. Environment Setup

2.1 Directory Setting

Notion: Data Files에 접속하여 data, schema, .env 파일들을 다운받은 후 아래와 같이 디렉토리를 구성해주세요.

.
├─ chatbot
├─ config
├─ data
│  ├─calender
│  │   └─calender24.xlsx
│  ├─docstore
│  │   └─(*script 코드를 실행하면 자동적으로 이 위치에 생성됨)
│  ├─kopas
│  │   └─raw
│  ├─rule (생략)
│  │   ├─제10편 내규
│  │   ├─제2편 학칙 및 학위수여규정
│  │   ├─제3편 학사관리-교무행정
│  │   ├─제3편 학사관리-학생행정
│  │   └─제5편 부속기관
│  ├─schema
│  │   ├─data_schema.yaml
│  │   └─manaage_schema.yaml
│  ├─Questions.txt
│  ├─docstore_wiki.pickle(*script 코드를 실행하면 자동적으로 이 위치에 생성됨)
│  └─RecordManager(*script 코드를 실행하면 자동적으로 이 위치에 생성됨)
├─ script
│  └─utils
├─ .env
├─ .gitignore
├─ manage.py
├─ Pipfile
└─ Pipfile.lock
Dotenv Setting

Dotenv 파일은 아래의 항목들로 구성되어 있습니다.

# DJANGO SETTINGS
SECRET_KEY=
DEBUG=
IS_DEVELOP=
DJANGO_SETTINGS_MODULE=

# DOCKERIZE SETTINGS
PORT=
USE_DOCKER=

# MYSQL SETTINGS
MYSQL_NAME=
MYSQL_USER=
MYSQL_PASSWORD=
MYSQL_HOST=
MYSQL_PORT=

# REDIS SETTINGS
REDIS_URL=
RULE_INDEX=
WIKI_INDEX=
QUESTION_INDEX=

# OPENAI SETTINGS
OPENAI_API_KEY=

# PATH
PICKLE_PATH=
source_id_key=
DATA_SCHEMA_PATH=
MANAGE_SCHEMA_PATH=

# LANGFUSE SETTINGS
LANGFUSE_SECRET_KEY=
LANGFUSE_PUBLIC_KEY=
LANGFUSE_HOST=

2.2 Environment Setting

개발 환경을 구성하기 위하여 파이썬 가상 환경을 생성합니다.
가상환경은 pipenv를 사용하여 설정합니다. 권장 Python 버전은 3.10.11입니다. 해당 파이썬 버전이 없다면 설치 후 진행해주세요.

# install & 가상환경 만들기
> pipenv install

# 가상환경 실행
> pipenv shell

아래의 명령어들은 개발을 하며 알아두면 좋은 명령어입니다.

# 추가 패키지 설치하기
> pipenv install 패키지명
  `pip freeze > requirements.txt`과 같이 라이브러리 설치 후 명령어를 실행하지 않아도, pipenv는 자동으로 의존성 관리 파일을 업데이트합니다.

# 패키지 라이브러리 버전 확인
> pip show 패키지

# 단일 명령어를 가상환경 내부 python으로 돌리기
> pipenv run 명령어_블라블라

# 의존성 그래프 출력
> pipenv graph

# 가상환경 삭제
> pipenv --rm

# 가상환경 비활성화
> deactivate

3. VectorDB Setup

script 디렉토리에는 RAG Vectorstore를 구성하는 데 필요한 데이터의 적재, 로드 및 저장과 관련된 코드들이 위치합니다.
모든 코드는 가상환경을 활성화 한 후 실행해주세요.

3.1 VectorDB Setting

다음 명령어를 실행해주세요.

# 학칙 script 실행
> python script/manage_rule.py -SETUP True

# Wiki script 실행
> python script/manage_wiki.py -SETUP True

script를 실행하는데 약간의 시간이 소요됩니다.

학칙 script는 실행 후 출력이 없습니다. Wiki script는 실행 후 다음과 같이 출력됩니다.
{'num_added': 395, 'num_updated': 0, 'num_skipped': 0, 'num_deleted': 0}

VectorDB Setup 부가 설명
# script 실행
> python script/{script_name}.py

몇몇 스크립트는 Optional Argument 파라미터를 입력받습니다. (Optional이기 때문에 입력하지 않아도 작동합니다.)
스크립트 실행 명령 뒤에 "-h" 키워드를 추가하여 Optional Argument에 대한 설명을 확인할 수 있습니다.

# 도움말 보기 예시
> python script/manage_rule.py -h

: '
usage: manage_rule.py [-h] [-SETUP SETUP]

ASKu-AI: SETUP Vectorstore FROM Rule data.

optional arguments:
  -h, --help    show this help message and exit
  -SETUP SETUP  If True, then creates an index in Vectorstore
'

3.2 VectorDB Index Inspection

Redis Vectorstore Indexing과 관련된 코드를 작업한 후에는 반드시 Index가 제대로 생성되었는 지 확인해주세요.
Redis가 설치된 Docker Container의 터미널, 또는 그 터미널과 통합된 Linux Terminal에 접속해주세요.

manage_wiki 스크립트를 실행할 때에는 반드시 data 디렉토리 내의 RecordManager를 삭제해주시기 바라며,
manage_wikiUpdate 스크립트를 실행할 때에는 .env 파일 내에 이전 InMemorySotre_path를 업데이트 해주세요.

# Redis cilent 접속
redis-cli

# 존재하는 Redis Index 확인
127.0.0.1:6379> ft._list

# 생성한 Index의 Record 개수 및 hash_indexing_failures 의 값이 0인지 확인
127.0.0.1:6379> ft.info ($your_index_name)

# 비정상적으로 생성된 Redis Index는 삭제
127.0.0.1:6379> ft.dropindex ($your_index_name) DD

4. Django Setup

# 마이그레이션
> python manage.py migrate

# 장고 서버 실행
> python manage.py runserver

문서화 확인하는 방법

  • 127.0.0.1:8000/swagger 또는 127.0.0.1:8000/redoc 접속하기