diff --git a/vacancies/main/vector_store.py b/vacancies/main/vector_store.py index df447a4..eecae07 100644 --- a/vacancies/main/vector_store.py +++ b/vacancies/main/vector_store.py @@ -106,15 +106,15 @@ def add_vectors(collection_name: str, _id: int, features: dict, payload: dict): def search_similarities(query_filter: Filter, cv_id: int): - vectors = client.retrieve( + cv = client.retrieve( collection_name="cvs", ids=[cv_id], with_vectors=True, - )[0].vector + )[0] max_similarities = {} vacancies_content = {} - for name, vec in vectors.items(): + for name, vec in cv.vector.items(): if any(v != 0 for v in vec): results = client.query_points( collection_name="vacancies", @@ -140,11 +140,15 @@ def search_similarities(query_filter: Filter, cv_id: int): total = sum(feature_sims[feature] * weights.get(feature, 1) for feature in feature_sims) scored.append({"id": vid, "score": total, "content": vacancies_content[vid]["content"], "link": vacancies_content[vid]["link"]}) + scored.sort(key=lambda x: x["score"], reverse=True) + prompt = f""" - Среди вакансий ниже выбери одну наиболее релевантную и выведи ее индекс. + Резюме: {cv.payload['content']} + + Среди вакансий ниже выбери одну наиболее релевантную и выведи ее индекс(от 0 до 9). Если среди вакансий нет подходящих, то верни -1. В ответе выведи только число. - {scored} + {scored[:10]} """ openai_client = ChatOpenAI(model_name="gpt-5-mini", reasoning_effort="minimal", temperature=0, seed=42, top_p=1) response = openai_client.invoke(prompt)