| 443 | |
| 444 | |
| 445 | def save_embeddings(session_maker, ids: List[int]): |
| 446 | if not settings.EMBEDDING_ENABLED: |
| 447 | return |
| 448 | |
| 449 | if not ids or len(ids) == 0: |
| 450 | return |
| 451 | try: |
| 452 | session = session_maker() |
| 453 | _list = session.query(DataTraining).filter(and_(DataTraining.id.in_(ids))).all() |
| 454 | |
| 455 | _question_list = [item.question for item in _list] |
| 456 | |
| 457 | model = EmbeddingModelCache.get_model() |
| 458 | |
| 459 | results = model.embed_documents(_question_list) |
| 460 | |
| 461 | for index in range(len(results)): |
| 462 | item = results[index] |
| 463 | stmt = update(DataTraining).where(and_(DataTraining.id == _list[index].id)).values(embedding=item) |
| 464 | session.execute(stmt) |
| 465 | session.commit() |
| 466 | |
| 467 | except Exception: |
| 468 | traceback.print_exc() |
| 469 | finally: |
| 470 | session_maker.remove() |
| 471 | |
| 472 | |
| 473 | embedding_sql = f""" |