| from langchain_openai import ChatOpenAI, OpenAIEmbeddings | |
| from langchain_qdrant import QdrantVectorStore | |
| from qdrant_client import QdrantClient | |
| from qdrant_client.http.models import ( | |
| Distance, | |
| VectorParams, | |
| ) | |
| from config import ( | |
| COLLECTION_NAME, | |
| OPENAI_API_KEY, | |
| OPENAI_BASE_URL, | |
| QDRANT_API_KEY, | |
| QDRANT_URL, | |
| ) | |
| EMBEDDING = OpenAIEmbeddings( | |
| openai_api_key=OPENAI_API_KEY, | |
| openai_api_base=OPENAI_BASE_URL, | |
| model="Qwen/Qwen3-Embedding-8B", | |
| check_embedding_ctx_length=False, | |
| ) | |
| QDRANT_CLIENT = QdrantClient( | |
| url=QDRANT_URL, | |
| api_key=QDRANT_API_KEY, | |
| port=443, | |
| https=True, | |
| ) | |
| if not QDRANT_CLIENT.collection_exists(COLLECTION_NAME): | |
| QDRANT_CLIENT.create_collection( | |
| collection_name=COLLECTION_NAME, | |
| vectors_config=VectorParams( | |
| size=4096, | |
| distance=Distance.COSINE, | |
| ), | |
| ) | |
| VECTOR_STORE = QdrantVectorStore( | |
| client=QDRANT_CLIENT, | |
| collection_name=COLLECTION_NAME, | |
| embedding=EMBEDDING, | |
| ) | |
| LLM = ChatOpenAI( | |
| openai_api_key=OPENAI_API_KEY, | |
| openai_api_base=OPENAI_BASE_URL, | |
| model="openai/gpt-oss-120b", | |
| temperature=0.3, | |
| streaming=True, | |
| ) | |