|
|
|
|
|
|
|
|
from rag.app.qa import rmPrefix, beAdoc |
|
|
from rag.app.qa import rmPrefix, beAdoc |
|
|
from rag.nlp import rag_tokenizer |
|
|
from rag.nlp import rag_tokenizer |
|
|
from api.db import LLMType, ParserType |
|
|
from api.db import LLMType, ParserType |
|
|
from api.db.services.llm_service import TenantLLMService |
|
|
|
|
|
|
|
|
from api.db.services.llm_service import TenantLLMService, LLMBundle |
|
|
from api import settings |
|
|
from api import settings |
|
|
import xxhash |
|
|
import xxhash |
|
|
import re |
|
|
import re |
|
|
|
|
|
|
|
|
e, kb = KnowledgebaseService.get_by_id(kb_ids[0]) |
|
|
e, kb = KnowledgebaseService.get_by_id(kb_ids[0]) |
|
|
if not e: |
|
|
if not e: |
|
|
return get_error_data_result(message="Dataset not found!") |
|
|
return get_error_data_result(message="Dataset not found!") |
|
|
embd_mdl = TenantLLMService.model_instance( |
|
|
|
|
|
kb.tenant_id, LLMType.EMBEDDING.value, llm_name=kb.embd_id |
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
embd_mdl = LLMBundle(kb.tenant_id, LLMType.EMBEDDING, llm_name=kb.embd_id) |
|
|
|
|
|
|
|
|
rerank_mdl = None |
|
|
rerank_mdl = None |
|
|
if req.get("rerank_id"): |
|
|
if req.get("rerank_id"): |
|
|
rerank_mdl = TenantLLMService.model_instance( |
|
|
|
|
|
kb.tenant_id, LLMType.RERANK.value, llm_name=req["rerank_id"] |
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
rerank_mdl = LLMBundle(kb.tenant_id, LLMType.RERANK, llm_name=req["rerank_id"]) |
|
|
|
|
|
|
|
|
if req.get("keyword", False): |
|
|
if req.get("keyword", False): |
|
|
chat_mdl = TenantLLMService.model_instance(kb.tenant_id, LLMType.CHAT) |
|
|
|
|
|
|
|
|
chat_mdl = LLMBundle(kb.tenant_id, LLMType.CHAT) |
|
|
question += keyword_extraction(chat_mdl, question) |
|
|
question += keyword_extraction(chat_mdl, question) |
|
|
|
|
|
|
|
|
retr = settings.retrievaler if kb.parser_id != ParserType.KG else settings.kg_retrievaler |
|
|
retr = settings.retrievaler if kb.parser_id != ParserType.KG else settings.kg_retrievaler |