first commit

This commit is contained in:
2026-03-19 22:54:29 +03:30
parent 1a178f39b7
commit 035bc6f74d
91 changed files with 3821 additions and 130 deletions
+27 -5
View File
@@ -1,5 +1,5 @@
"""
بارگذاری تنظیمات RAG از rag_config.yaml
بارگذاری تنظیمات RAG از rag_config.yaml — با پشتیبانی از چند provider و چند پایگاه دانش
"""
import os
from dataclasses import dataclass, field
@@ -16,6 +16,8 @@ class EmbeddingConfig:
batch_size: int = 32
api_key_env: str | None = None
base_url: str | None = None
avalai_base_url: str | None = None
avalai_api_key_env: str | None = None
@dataclass
@@ -37,6 +39,15 @@ class LLMConfig:
model: str = "gpt-4o"
base_url: str | None = None
api_key_env: str | None = None
avalai_base_url: str | None = None
avalai_api_key_env: str | None = None
@dataclass
class KnowledgeBaseConfig:
path: str
tone_file: str
description: str = ""
@dataclass
@@ -45,8 +56,7 @@ class RAGConfig:
qdrant: QdrantConfig
chunking: ChunkingConfig
llm: LLMConfig = field(default_factory=LLMConfig)
tone_file: str = "config/tone.txt"
knowledge_base_path: str = "config/knowledge_base"
knowledge_bases: dict[str, KnowledgeBaseConfig] = field(default_factory=dict)
chromadb: dict[str, Any] = field(default_factory=dict)
@@ -73,6 +83,8 @@ def load_rag_config(config_path: str | Path | None = None) -> RAGConfig:
batch_size=emb.get("batch_size", 32),
api_key_env=emb.get("api_key_env"),
base_url=emb.get("base_url"),
avalai_base_url=emb.get("avalai_base_url"),
avalai_api_key_env=emb.get("avalai_api_key_env"),
)
qd = data.get("qdrant", {})
@@ -94,14 +106,24 @@ def load_rag_config(config_path: str | Path | None = None) -> RAGConfig:
model=llm_data.get("model", "gpt-4o"),
base_url=llm_data.get("base_url"),
api_key_env=llm_data.get("api_key_env"),
avalai_base_url=llm_data.get("avalai_base_url"),
avalai_api_key_env=llm_data.get("avalai_api_key_env"),
)
kb_data = data.get("knowledge_bases", {})
knowledge_bases: dict[str, KnowledgeBaseConfig] = {}
for kb_name, kb_conf in kb_data.items():
knowledge_bases[kb_name] = KnowledgeBaseConfig(
path=kb_conf.get("path", f"config/knowledge_base/{kb_name}"),
tone_file=kb_conf.get("tone_file", f"config/tones/{kb_name}_tone.txt"),
description=kb_conf.get("description", ""),
)
return RAGConfig(
embedding=embedding,
qdrant=qdrant,
chunking=chunking,
llm=llm,
tone_file=data.get("tone_file", "config/tone.txt"),
knowledge_base_path=data.get("knowledge_base_path", "config/knowledge_base"),
knowledge_bases=knowledge_bases,
chromadb=data.get("chromadb", {}),
)