Этот проект объединяет Langchain с FastAPI в асинхронном, масштабируемом способе, обеспечивая структуру для индексации и поиска документов, используя PostgreSQL/PGVector.
Файлы организованы в встраивание по file_id . Основной вариант использования предназначен для интеграции с Librechat, но этот простой API может использоваться для любого варианта использования на основе идентификаторов.
Основная причина использования идентификационного подхода-работать со вставками на уровне файла. Это делает для целевых запросов в сочетании с метаданными файлами, хранящимися в базе данных, например, Librechat.
API со временем будет развиваться для использования различных методов запросов/повторного рейтинга, моделей встраивания и векторных магазинов.
.env на основе раздела нижеdocker compose up (также начинается с RAG API)docker compose -f ./db-compose.yaml updocker compose up (также запускает PSQL/PGVector)docker compose -f ./api-compose.yaml upDB_HOST на правильное имя хоста базы данныхpip install -r requirements.txt
uvicorn main:appДля запуска приложения требуются следующие переменные среды:
RAG_OPENAI_API_KEY : клавиша API для API API API (при использовании настроек по умолчанию).
OPENAI_API_KEY будет работать, но RAG_OPENAI_API_KEY переопределяет его, чтобы не противоречить настройке Librechat. RAG_OPENAI_BASEURL : (необязательно) Базовый URL для ваших API API -API
RAG_OPENAI_PROXY : (Необязательно) Прокси для API API Openai
VECTOR_DB_TYPE : (Необязательно) Выберите тип векторной базы данных, по умолчанию в pgvector .
POSTGRES_DB : (необязательно) Имя базы данных PostgreSQL, используемое при VECTOR_DB_TYPE=pgvector .
POSTGRES_USER : (необязательно) Имя пользователя для подключения к базе данных PostgreSQL.
POSTGRES_PASSWORD : (необязательно) Пароль для подключения к базе данных PostgreSQL.
DB_HOST : (Необязательно) Имя хоста или IP -адрес сервера базы данных PostGRESQL.
DB_PORT : (Необязательно) Номер порта сервера базы данных PostGRESQL.
RAG_HOST : (Необязательно) Имя хоста или IP -адрес, где будет работать сервер API. По умолчанию "0,0,0,0"
RAG_PORT : (необязательно) Номер порта, где будет работать сервер API. По умолчанию в порт 8000.
JWT_SECRET : (необязательно) Секретный ключ, используемый для проверки токенов JWT для запросов.
COLLECTION_NAME : (необязательно) Название коллекции в Vector Store. Значение по умолчанию - «TestCollection».
CHUNK_SIZE : (необязательно) Размер кусков для обработки текста. Значение по умолчанию - «1500».
CHUNK_OVERLAP : (необязательно) Перекрытие между кусочками во время обработки текста. Значение по умолчанию - «100».
RAG_UPLOAD_DIR : (необязательно) каталог, в котором хранятся загруженные файлы. Значение по умолчанию - "./uploads/".
PDF_EXTRACT_IMAGES : (Необязательно) Булевое значение, указывающее, извлекать ли изображения из файлов PDF. Значение по умолчанию - «false».
DEBUG_RAG_API : (Необязательно) Установите на «TRUE», чтобы показать больше сигналов журнала словесных систем в консоли сервера и для включения маршрутов базы данных PostGRESQL
CONSOLE_JSON : (необязательно) установить для «true» для регистрации как JSON для облачных регистраций
EMBEDDINGS_PROVIDER : (необязательно) либо «openai», «bedrock», «azure», «huggingface», «huggingfacetei» или «ollama», где «Huggingface» использует предложение_ transformers; по умолчанию "Openai"
EMBEDDINGS_MODEL : (необязательно) Установите допустимую модель Enterdings для использования у настроенного поставщика.
RAG_AZURE_OPENAI_API_VERSION : (необязательно) По умолчанию 2023-05-15 . Версия Azure OpenAI API.
RAG_AZURE_OPENAI_API_KEY : (Необязательно) Ключ API для Azure Openai Service.
AZURE_OPENAI_API_KEY будет работать, но RAG_AZURE_OPENAI_API_KEY переопределяет его, чтобы не противоречить настройке Librechat. RAG_AZURE_OPENAI_ENDPOINT : (необязательно) URL конечной точки для службы Azure Openai, включая ресурс.
https://YOUR_RESOURCE_NAME.openai.azure.com .AZURE_OPENAI_ENDPOINT будет работать, но RAG_AZURE_OPENAI_ENDPOINT переопределяет его, чтобы не противоречить настройке Librechat. HF_TOKEN : (необязательно), если это необходимо для опции huggingface .
OLLAMA_BASE_URL : (Необязательно) по умолчанию http://ollama:11434 .
ATLAS_SEARCH_INDEX : (необязательно) Имя индекса поиска вектора при использовании Atlas MongoDB, по умолчанию vector_index
MONGO_VECTOR_COLLECTION : устарел для MongoDB, используйте ATLAS_SEARCH_INDEX и COLLECTION_NAME
AWS_DEFAULT_REGION : (необязательно) по умолчанию в us-east-1
AWS_ACCESS_KEY_ID : (Необязательно) Необходим для внедрения коренных пород
AWS_SECRET_ACCESS_KEY : (Необязательно) Требуется для внедрения коренных пород
Обязательно установите эти переменные среды перед запуском приложения. Вы можете установить их в файл .env или как переменные системной среды.
Вместо использования PGVector по умолчанию мы могли бы использовать Atlas MongoDB в качестве векторной базы данных. Для этого установите следующие переменные среды
VECTOR_DB_TYPE = atlas-mongo
ATLAS_MONGO_DB_URI = <mongodb+srv://...>
COLLECTION_NAME = <vector collection>
ATLAS_SEARCH_INDEX = <vector search index> ATLAS_MONGO_DB_URI может быть таким же или отличным от того, что используется Librechat. Даже если это то же самое, коллекция $COLLECTION_NAME должна быть совершенно новой, отделенной от всех коллекций, используемых Librechat. Кроме того, создайте индекс векторного поиска для коллекции выше (не забудьте назначить $ATLAS_SEARCH_INDEX ) со следующим JSON:
{
"fields" : [
{
"numDimensions" : 1536 ,
"path" : " embedding " ,
"similarity" : " cosine " ,
"type" : " vector "
},
{
"path" : " file_id " ,
"type" : " filter "
}
]
}Следуйте одним из четырех задокументированных методов для создания векторного индекса.
Убедитесь, что ваш экземпляр RDS Postgres придерживается этого требования:
The pgvector extension version 0.5.0 is available on database instances in Amazon RDS running PostgreSQL 15.4-R2 and higher, 14.9-R2 and higher, 13.12-R2 and higher, and 12.16-R2 and higher in all applicable AWS Regions, including the AWS GovCloud (US) Regions.
Чтобы настроить RDS Postgres с RAG API, вы можете выполнить эти шаги:
Создайте экземпляр RDS/кластер, используя предоставленную документацию AWS.
Войдите в кластер RDS, используя строку подключения конечной точки из консоли RDS или из выхода решения IAC.
Вход через главного пользователя .
Создайте выделенную базу данных для RAG_API: create database rag_api; Полем
Создайте выделенную пользовательскую роль для этой базы данных: create role rag;
Переключитесь на только что созданную базу данных: c rag_api
Включить векторное расширение: create extension vector;
Используйте документацию, представленную выше, чтобы настроить строку подключения к экземпляру RDS Postgres Cluster.
Примечания:
create role x with superuser;Запустите следующие команды для установки форматера предварительной коммиты, которая использует форматер черного кода:
pip install pre-commit
pre-commit install