Files
ai-g3sb-backman2.0/backend/utils/__pycache__/fewshot_chroma_store.cpython-312.pyc
T

70 lines
10 KiB
Plaintext
Raw Normal View History

Ë
˜äÝiãó¼—dZddlmZddlZddlZddlZddlmZddlm Z m
Z
m Z m Z m
Z
ddlZddlmZej$e«ZdZdZd Zd
Zd ZGd „d
«Zdd„Zy)uß
Few-shot �验样本的 Chroma ��库存储与检索。
与 SchemaIndexer 一致:使用项目统一 ``get_embedder()``,�久化目录默认
``./data/embeddings/chroma_fewshot``,集�� ``fewshot_samples``。
é)Ú annotationsN)ÚPath)ÚAnyÚDictÚListÚOptionalÚTuple)ÚSettingsz ./data/embeddings/chroma_fewshotÚfewshot_samplesi€>ipiÐcót—eZdZdZ d d
d„Zdd„Zdd„Zdddœ dd „Z d dd
„Zdd „Z y)ÚFewShotChromaStoreu5Few-shot JSONL → Chroma 写入与按å�‘é‡�检索。Ncó¸—||_|xsdj«}tjd«xsdj«}|xs
|xst|_t
|xstjd«xstj««|_|jjdd¬«tjt|j«td¬«¬«|_|jj|j
d d
i¬ «|_t"j%d |j|j
|j j'««y)
NÚÚFEWSHOT_CHROMA_COLLECTIONÚFEWSHOT_CHROMA_PATHT)ÚparentsÚexist_okF)Úanonymized_telemetry)ÚpathÚsettingsú
hnsw:spaceÚcosine©ÚnameÚmetadataz7[OK] FewShotChromaStore: path=%s collection=%s count=%s)ÚembedderÚstripÚosÚgetenvÚCOLLECTION_NAMEÚcollection_namerÚDEFAULT_FEWSHOT_CHROMA_DIRÚ persist_dirÚmkdirÚchromadbÚPersistentClientÚstrÚChromaSettingsÚclientÚget_or_create_collectionÚ
collectionÚloggerÚinfoÚcount)Úselfrr#r!ÚexplicitÚfrom_envs úJC:\Users\24019\Desktop\backman-camel\backend\utils\fewshot_chroma_store.pyÚ__init__zFewShotChromaStore.__init__ s€ð !ˆŒ
à#Ò) r×0Ñ0Ó2ˆÜ—I‘IÐ9Ó:Ò@¸b×GÑGÓIˆØ'ÒF¨8ÒF´ˆÔÜØ
Ò
ZœBŸI™IÐ&;Ó<Ò
ZÔ@Z× aÑ aÓ có
ˆÔð
×Ñ×Ñ t°dÐÔ;Ü×/Ñ/Ü�T×%Ñ%Ó&Ü#¸Ô?ô
ˆŒ ðŸ+™+×>Ñ>Ø×%Ñ%Ø" HÐ-ð?ó
ˆŒô � ‰ Ø EØ × Ñ Ø × Ñ Ø �O‰O× !Ñ !Ó #õ 
ócóH—t|jj««S)N)Úintr+r.©r/s r2r.zFewShotChromaStore.count>s€Ü�4—?‘?×(Ñ(Ó*Ó+Ð+r4có—|jj«dkDri|jj|j«|jj |jddi¬«|_t jd«yy)u8删除集å�ˆå†…全部文档(用于 force rebuild)。rrrru-[OK] Few-shot Chroma 集å�ˆå·²æ¸…空并é‡�建N)r+r.r)Údelete_collectionr!r*r,r-r7s r2ÚclearzFewShotChromaStore.clearAsp€à �?‰?× Ñ Ó " QÒ &Ø �K‰K× )Ñ )¨$×*>Ñ*>Ô ?Ø"Ÿk™k×BÑBØ×)Ñ)Ø&¨Ð1ðCóˆDŒOô
�K‰KÐGÕ Hð
'r4Fé )Ú
force_rebuildÚ
batch_sizec
ó¬—|stjd«y|r#|j«dkDr|j«|sG|j«dkDr4tj d|j««|j«S|D�cgc]$}|j
xsdj
«xsd‘Œ&}}|D�cgc]}t|j«‘Œ}}g}|D]Å}|jt|j«|jxsddt|jxsddt|jxsddt|j �t#|j «nd|j$xsddd t'j(|j*xsgd
¬ «dd d
œ«ŒÇtj dt-|««|j.j1|t3|t-|««dd¬«}|j4j7|j9«|||¬«tj dt-|««t-|«Scc}wcc}w)uŠ
将已解�的样本列表写入 Chroma(��由 question_zh 编�)。
Returns:
写入�数
u)Few-shot Chroma: 无样本,跳过构建ruGFew-shot Chroma 已有 %s æ�¡ï¼Œè·³è¿‡æž„建(加 --force å�¯é‡�建)rÚ NéÿÿÿÿÚmediumr;F)Ú ensure_asciii )ÚqidÚ question_enÚsqlÚ explanationÚratingÚ
difficultyÚ tags_jsonu+Few-shot Chroma: 计算 %s æ�¡ embedding...T©r=Ú normalizeÚ
show_progress)Ú
embeddingsÚ documentsÚ metadatasÚidsu)[OK] Few-shot Chroma 索引完æˆ�: %s æ�¡)r,Úwarningr.r:r-Ú question_zhrr'rCÚappendrDÚ
_MAX_QEN_METArEÚ
_MAX_SQL_METArFÚ_MAX_EXPLAIN_METArGr6rHÚjsonÚdumpsÚtagsÚlenrÚencodeÚminr+ÚaddÚtolist) r/Úsamplesr<r=ÚsÚtextsrPrOrMs r2Úbuild_from_samplesz%FewShotChromaStore.build_from_samplesKs÷€ñÜ �N‰NÐFÔ GØá ˜TŸZ™Z›\¨AÒ-Ø �J‰JŒLá §¡£°Ò!1Ü �K‰KÐaÐcg×cmÑcmÓcoÔ pØ—:‘:“<Ð á?FÓG¹w¸!�!—-‘-Ò% 2×,Ñ,Ó.Ò5°#Ñ5¸wˆÐGá#*Ó+¡7˜aŒs�1—5‘5�z 7ˆÐ+Ø*,ˆ ÛˆAØ × Ñ ä˜qŸu™u›:Ø%&§]¡]Ò%8°b¸.¼=Ð$IØŸE™EšK R¨¬-Ð8Ø$%§M¡MÒ$7°RÐ9KÔ:KÐ#LØ/0¯x©xÐ/Cœc !§(¡(œmÈØ#$§<¡<Ò#;°8¸S¸bÐ"AÜ!%§¡¨A¯F©FªL°bÀuÔ!MÈeÈtÐ!Tñõ
ðô � ‰ ÐAÄ3ÀuÃ:ÔNØ—]‘]×)Ñ)Ø Ü˜:¤s¨5£zÓ2ØØð *ó
ˆ
ð
�‰×ÑØ!×(Ñ(Ó*ØØØð ô
ô � ‰ Ð?ÄÀSÃÔJÜ�3‹xˆùòAHùâ+s  )I Â:Icó—|j«}|dk(rgS|jj|xsdj«xsdgddd¬«}t t |d«|«}|j j|j«|¬«}g}|d r|d ds|St|d d|d
d|d d|d d«D]A\}} }
} d
t| «z
} t|
xsi«}
||
d<|j| |
| xsdf«ŒC|S)uw
Returns:
(score, metadata_dict, document) 列表,score � SchemaIndexer 为 1-distance
rrr?éTFrJ)Úquery_embeddingsÚ n_resultsrPÚ distancesrOrNgð?rC)
r.rr[rr\Úmaxr+Úqueryr^ÚzipÚfloatÚdictrS)r/riÚtop_kÚnÚq_embÚkÚresultsÚoutÚtidÚdistÚmetaÚdocÚscoreÚms r2Ú
search_rawzFewShotChromaStore.search_raw…s<€ð