Add Qdrant and ChromaDB support to the project

- Added Qdrant service to both docker-compose files for production and development.
- Updated environment variables in .env.example and settings.py to include Qdrant configuration.
- Included necessary dependencies for Qdrant and ChromaDB in requirements.txt.
- Updated .gitignore to exclude ChromaDB data files.
This commit is contained in:
2026-02-27 19:37:02 +03:30
parent 9ec0807d3c
commit 197f70ee12
36 changed files with 1199 additions and 0 deletions
View File
+3
View File
@@ -0,0 +1,3 @@
# پایگاه دانش CropLogic
فایل‌های `.txt` و `.md` این پوشه به‌صورت خودکار embed و به Qdrant اضافه می‌شوند.
+19
View File
@@ -0,0 +1,19 @@
# دانش پایه خاک برای کشاورزی
## انواع خاک
خاک‌ها بر اساس بافت (نسبت رس، سیلت و شن) دسته‌بندی می‌شوند. خاک رسی زهکشی ضعیف‌تری دارد و خاک شنی زهکشی سریع. خاک لومی ترکیبی متعادل از هر سه است و برای اغلب گیاهان مناسب است.
## pH خاک
مقیاس pH از ۰ تا ۱۴ است؛ مقدار ۷ خنثی است. خاک‌های اسیدی (زیر ۷) و قلیایی (بالای ۷) بر جذب عناصر غذایی تأثیر می‌گذارند. بیشتر گیاهان زراعی pH حدود ۶ تا ۷.۵ را ترجیح می‌دهند.
## رطوبت خاک
رطوبت خاک بر رشد ریشه و جذب آب و مواد غذایی تأثیر مستقیم دارد. رطوبت بیش از حد باعث خفگی ریشه و کمبود اکسیژن می‌شود؛ رطوبت کم باعث تنش آبی و کاهش عملکرد می‌شود.
## NPK و عناصر غذایی
نیتروژن (N) برای رشد سبزینه و برگ‌ها ضروری است. فسفر (P) برای ریشه‌زایی و گلدهی مهم است. پتاسیم (K) مقاومت به خشکی و بیماری را افزایش می‌دهد. مقادیر این عناصر در خاک با آزمون خاک قابل اندازه‌گیری است.
## هدایت الکتریکی (EC)
EC نشان‌دهنده شوری خاک است. EC بالا یعنی نمک زیاد و می‌تواند به ریشه گیاه آسیب برساند. واحد آن معمولاً dS/m یا mS/cm است.
## عمق خاک
داده‌های خاک معمولاً در اعماق ۰–۵، ۵–۱۵ و ۱۵–۳۰ سانتی‌متر اندازه‌گیری می‌شوند. لایه سطحی برای جوانه‌زنی و ریشه‌های سطحی مهم است؛ لایه‌های عمیق‌تر برای گیاهان ریشه‌عمیق اهمیت دارند.
+23
View File
@@ -0,0 +1,23 @@
# تنظیمات RAG برای پایگاه دانش CropLogic
embedding:
provider: "avalai" # Avalai API (OpenAI-compatible)
model: "text-embedding-3-small"
base_url: "https://api.avalai.ir/v1"
api_key_env: "AVALAI_API_KEY"
batch_size: 32
# فاز یک: Qdrant به‌عنوان vector store
qdrant:
host: "localhost" # یا qdrant در Docker
port: 6333
collection_name: "croplogic_kb"
vector_size: 1536 # متناسب با text-embedding-3-small
chunking:
max_chunk_tokens: 500
overlap_tokens: 50
tone_file: "config/tone.txt"
knowledge_base_path: "config/knowledge_base"
user_info_path: "config/user_info"
+1
View File
@@ -20,6 +20,7 @@ INSTALLED_APPS = [
"django.contrib.staticfiles",
"rest_framework",
"corsheaders",
"rag",
"tasks",
"soil_data",
"sensor_data",
+7
View File
@@ -0,0 +1,7 @@
# فایل لحن / سبک پاسخ‌های RAG
لحن و سبک پاسخ‌ها:
- سطح: دوستانه و تخصصی؛ با کشاورز به زبان ساده و علمی صحبت کن.
- واژگان: از اصطلاحات رایج کشاورزی و خاک‌شناسی استفاده کن، در صورت نیاز معادل فارسی بیاور.
- طول: پاسخ‌ها مختصر و کاربردی؛ در صورت لزوم با بولت یا شماره ساختاربندی کن.
- هشدار: اگر موضوع ایمنی یا سلامتی گیاه/خاک باشد، صریحاً هشدار بده.
View File
+3
View File
@@ -0,0 +1,3 @@
# اطلاعات کاربران
فایل‌های `.txt` و `.md` این پوشه به‌عنوان اطلاعات هر کاربر embed و ذخیره می‌شوند.
+44
View File
@@ -0,0 +1,44 @@
{
"farm": {
"name": "مزرعه نمونه گلستان",
"location": {
"latitude": 36.2,
"longitude": 52.5
}
},
"soil_data": {
"0-5cm": {
"phh2o": 7.2,
"clay": 25,
"sand": 45,
"silt": 30,
"soc": 1.4,
"nitrogen": 0.12
},
"5-15cm": {
"phh2o": 7.4,
"clay": 28,
"sand": 42,
"silt": 30,
"soc": 1.1,
"nitrogen": 0.09
},
"15-30cm": {
"phh2o": 7.5,
"clay": 30,
"sand": 40,
"silt": 30,
"soc": 0.8,
"nitrogen": 0.07
}
},
"sensor_readings": {
"soil_moisture": 32,
"soil_temperature": 24.5,
"soil_ph": 7.1,
"electrical_conductivity": 2.1,
"nitrogen": 15,
"phosphorus": 8,
"potassium": 180
}
}