| | 167 | |
| | 168 | == '''Чекор 6''' |
| | 169 | Корисникот внесува текст, систмеот тој текст го претвора во вектор и ги наоѓа најсличните активности, услуги и опрема. |
| | 170 | |
| | 171 | '''Како работи?''' - Ситемот му овозможува на корисникот да внесе текст ( на пример корисникот внесува "Hiking" ) и авотматски се наоѓаат најсличните поврзани активности, услуги и опрема. Внесениот текст се претвора во векотр со истиот AI модел кој е користен при генерирање на embeddings, а потоа се пресметува cosine similarity со сите зачувани вектори во базата. |
| | 172 | |
| | 173 | Креираме Python скрипта search_recommendations.py |
| | 174 | |
| | 175 | {{{ |
| | 176 | import psycopg2 |
| | 177 | from sentence_transformers import SentenceTransformer |
| | 178 | from dotenv import load_dotenv |
| | 179 | import os |
| | 180 | |
| | 181 | load_dotenv() |
| | 182 | |
| | 183 | conn = psycopg2.connect( |
| | 184 | host=os.getenv("DB_HOST"), |
| | 185 | port=os.getenv("DB_PORT"), |
| | 186 | database=os.getenv("DB_NAME"), |
| | 187 | user=os.getenv("DB_USER"), |
| | 188 | password=os.getenv("DB_PASSWORD") |
| | 189 | ) |
| | 190 | cursor = conn.cursor() |
| | 191 | |
| | 192 | model = SentenceTransformer('all-MiniLM-L6-v2') |
| | 193 | |
| | 194 | query = input("Enter description: ") |
| | 195 | query_embedding = model.encode(query).tolist() |
| | 196 | |
| | 197 | # Similar activities |
| | 198 | cursor.execute("SELECT * FROM find_similar_activities(%s::vector, 1)", (query_embedding,)) |
| | 199 | results = cursor.fetchall() |
| | 200 | print("\nMost similar activities:") |
| | 201 | for row in results: |
| | 202 | print(f"- {row[1]} ({row[2]}) — similarity: {round(row[3], 3)}") |
| | 203 | |
| | 204 | # Similar services |
| | 205 | cursor.execute("SELECT * FROM find_similar_services(%s::vector, 5)", (query_embedding,)) |
| | 206 | results = cursor.fetchall() |
| | 207 | print("\nMost similar services:") |
| | 208 | for row in results: |
| | 209 | print(f"- {row[1]} ({row[2]}) — similarity: {round(row[3], 3)}") |
| | 210 | |
| | 211 | # Similar equipment |
| | 212 | cursor.execute("SELECT * FROM find_similar_equipment(%s::vector, 1)", (query_embedding,)) |
| | 213 | results = cursor.fetchall() |
| | 214 | print("\nMost similar equipment:") |
| | 215 | for row in results: |
| | 216 | print(f"- {row[1]} ({row[2]}) — similarity: {round(row[3], 3)}") |
| | 217 | |
| | 218 | cursor.close() |
| | 219 | conn.close() |
| | 220 | }}} |
| | 221 | |
| | 222 | Пример: |