Metadata-Version: 2.4
Name: django-pyhub-rag
Version: 0.1.1
Summary: Django app library for RAG integration
Project-URL: Homepage, https://github.com/pyhub-kr/django-pyhub-rag
Project-URL: Documentation, https://ai.pyhub.kr
Project-URL: Repository, https://github.com/pyhub-kr/django-pyhub-rag
Project-URL: Issues, https://github.com/pyhub-kr/django-pyhub-rag/issues
Author-email: Chinseok Lee <me@pyhub.kr>
License: MIT
Classifier: Development Status :: 4 - Beta
Classifier: Framework :: Django
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.10
Requires-Dist: django-lifecycle
Requires-Dist: django>=4.0.0
Requires-Dist: openai
Requires-Dist: pgvector
Requires-Dist: psycopg2-binary
Requires-Dist: tiktoken
Provides-Extra: build
Requires-Dist: build; extra == 'build'
Requires-Dist: setuptools; extra == 'build'
Requires-Dist: twine; extra == 'build'
Requires-Dist: wheel; extra == 'build'
Provides-Extra: dev
Requires-Dist: black; extra == 'dev'
Requires-Dist: djlint; extra == 'dev'
Requires-Dist: isort; extra == 'dev'
Requires-Dist: pre-commit; extra == 'dev'
Requires-Dist: ruff; extra == 'dev'
Provides-Extra: test
Requires-Dist: pytest; extra == 'test'
Requires-Dist: pytest-asyncio; extra == 'test'
Requires-Dist: pytest-django; extra == 'test'
Requires-Dist: pytest-testdox; extra == 'test'
Description-Content-Type: text/markdown

# django-pyhub-rag

> **Note**: 이 라이브러리는 현재 베타버전입니다. 기능이 변경될 수 있으며, 피드백을 환영합니다.

## 소개

django-pyhub-rag는 Django 프로젝트에서 RAG(Retrieval Augmented Generation) 기능을 쉽게 구현할 수 있도록 도와주는 라이브러리입니다. PostgreSQL의 벡터 검색 기능을 활용하여 문서 검색과 유사도 기반 조회를 지원합니다.

## 주요 기능

### Document 모델

Document 모델은 텍스트 문서와 해당 문서의 임베딩 벡터를 저장하고 관리하는 추상 기본 모델입니다. 이 모델을 상속받아 사용자 정의 문서 모델을 쉽게 구현할 수 있습니다.

#### 모델 상속 예시

```python
```

### DocumentQuerySet 기능

Document 모델은 벡터 검색을 위한 특별한 쿼리셋 메서드를 제공합니다:

- `similar_to(query_text, top_k=5)`: 주어진 텍스트와 가장 유사한 문서를 검색합니다.
- `similar_to_vector(vector, top_k=5)`: 주어진 벡터와 가장 유사한 문서를 검색합니다.

#### 사용 예시

```python
from pyhub.rag import Document
from pgvector.django import HnswIndex

class TaxlawDocument(Document):
    class Meta:
        indexes = [
            HnswIndex(
                name="taxlaw_doc_idx",
                fields=["embedding"],
                m=16,
                ef_construction=64,
                opclasses=["vector_cosine_ops"],
            ),
        ]
```

## 설치 요구사항

- Python 3.10+
- Django 4.0+

## 설치 방법

1. pip를 통한 설치:

```bash
pip install django-pyhub-rag
```

2. INSTALLED_APPS에 추가:

```python
INSTALLED_APPS = [
    ...
    "pyhub.rag",
]
```

3. 마이그레이션 실행:

```bash
python manage.py migrate
```

## 주의사항

- PostgreSQL에 pgvector 확장이 설치되어 있어야 합니다.
- Document 모델을 상속받는 모델은 반드시 `get_content()` 메서드를 구현해야 합니다.
- 임베딩 벡터의 차원은 기본적으로 OpenAI의 text-embedding-ada-002 모델 기준인 1536입니다.

## 라이선스

이 프로젝트는 MIT 라이선스 하에 배포됩니다.
