-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathembed.py
More file actions
37 lines (31 loc) · 1.03 KB
/
Copy pathembed.py
File metadata and controls
37 lines (31 loc) · 1.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
"""Embed stage — fill papers missing a vector via turbolab's e5 model. Offline-safe, idempotent."""
import db
import turbolab
def main():
conn = db.connect()
rows = db.papers_missing_embedding(conn)
print(f"Embed: {len(rows)} papers need a vector (turbolab @ {turbolab.CFG['url']})")
if rows and not turbolab.healthcheck():
print(" turbolab unreachable — skipping this stage (papers stay queued).")
return
done = 0
for r in rows:
text = r["abstract"] or r["title"]
vec = turbolab.embed(text, kind="passage")
if not vec:
continue
db.update_paper(
conn, r["arxiv_id"],
embedding=db.vec_to_blob(vec),
embedding_model=turbolab.CFG["embed_model"],
embedded_at=db.now_iso(),
)
done += 1
if done % 20 == 0:
conn.commit()
print(f" ...{done}/{len(rows)}")
conn.commit()
conn.close()
print(f"Embedded {done}/{len(rows)}.")
if __name__ == "__main__":
main()