一个字段,覆盖所有模态:Elasticsearch 的 semantic 字段如何自动索引和搜索图像、音频、视频和 PDF
ä¸ä¸ªå段ï¼è¦çæææ¨¡æï¼Elasticsearch ç semantic åæ®µå¦ä½èªå¨ç´¢å¼åæç´¢å¾åãé³é¢ãè§é¢å PDF
Elasticsearch 2026-08-07 0 é 读13åéä½è ï¼æ¥èª Elastic Mike Pellegrini
Semantic åæ®µä¼å¨æåé¶æ®µå°å¾åãé³é¢ãè§é¢ãPDF åææ¬è½¬æ¢ä¸ºå¤æ¨¡æ embeddingãä½ å¯ä»¥éè¿æè¿°ä¸ä¸ªåºæ¯æ¥æ¾å°å¯¹åºçå¾çï¼ä¹å¯ä»¥ä½¿ç¨è§é¢ä¸çä¸å¸§æ¥æ£ç´¢ç¸å ³çè§é¢ç段ï¼èè¿ä¸åé½åªéä¾èµ Elasticsearch ä¸çä¸ä¸ªå段å³å¯å®æã
Elasticsearch ä¸ç夿¨¡ææç´¢å¦ä»ä¸ææ¬æç´¢æ¥æç¸åçä½¿ç¨æ¹å¼ï¼å®ä¹ä¸ä¸ªå段ãç´¢å¼å 容ï¼ç¶åæ§è¡æ¥è¯¢å³å¯ã
semantic åæ®µä¼å¨æåé¶æ®µèªå¨ä¸ºå¾åãé³é¢ãè§é¢å PDF çæ embeddingã
æææ¨¡æé½ä¼æ å°å°åä¸ä¸ªå ±äº«çåé空é´ï¼å æ¤ä½ å¯ä»¥ï¼
-
ä½¿ç¨ææ¬æè¿°æ£ç´¢å¾çï¼
-
使ç¨ä¸å¥è¯å¹é ç¸å ³é³é¢ï¼
-
使ç¨è§é¢ä¸çä¸å¸§æ¥æ¾ç¸å ³è§é¢ï¼
èè¿ä¸åé½åªéä¾èµåä¸ä¸ªå段å³å¯å®æã
该åè½ä½ä¸ºææ¯é¢è§çï¼Tech Previewï¼å¨ Elasticsearch 9.5 å Serverless 䏿ä¾ãææ¯é¢è§åè½å¯è½ä¼åçååï¼å¹¶ä¸ä¸åæ£å¼åå¸ï¼GAï¼åè½æ¯æ SLA çè¦çã
è°è²æ¿éæ¸æå½¢ï¼Elasticsearch ä¸ç夿¨¡ææç´¢å¦ä½ä» semantic_text æ¼è¿èæ¥
semantic åæ®µèåäºè¿å»å å¹´æä»¬æ¨åºçå¤é¡¹äºè¡¥åè½ï¼å°å®ä»¬æ´å为ä¸è´ç夿¨¡ææç´¢ä½éªã
è¿äºåè½åèªè§£å³äºè¯ä¹æç´¢ä¸çä¸ä¸ªéè¦é®é¢ï¼èç»åå¨ä¸èµ·ä¹åï¼ä¾¿å®ç°äºåçç夿¨¡ææç´¢ã
第ä¸ç¬æ¥èª semantic_textãå¨å®åºç°ä¹åï¼å®ç°è¯ä¹æç´¢é常éè¦ï¼
-
æå¨é ç½® mappingï¼
-
é 置带æ ML 模åç ingest pipelineï¼
-
æå¨å¯¹å 容è¿è¡ chunkï¼
-
èªè¡çææ¥è¯¢æ¶ç embeddingã
semantic_text åæ®µå°è¿äºå¤æå·¥ä½å
¨é¨å°è£
èµ·æ¥ï¼
-
卿åé¶æ®µèªå¨æ§è¡ inferenceï¼
-
èªå¨å¯¹é¿ææ¡£è¿è¡ chunkï¼
-
ç®åéå¯¹è¯¥åæ®µç¼åçæ¥è¯¢ã
semantic_text äº Elasticsearch 8.15 馿¬¡æ¨åºï¼å¹¶äº Elasticsearch 8.18 æ£å¼åå¸ï¼å¦ä»å·²ç»æä¸ºå¹³å°è¯ä¹æç´¢çåºç¡ã
éåï¼æä»¬æ¨åºäºæ¯æå¤æ¨¡ææç´¢ç模åã
jina-embeddings-v5-omni æ¯ä¸ç³»å夿¨¡æ embedding 模åï¼è½å¤å°ï¼
-
ææ¬
-
å¾å
-
è§é¢
-
é³é¢
-
PDF
ç»ä¸ç¼ç å°åä¸ä¸ªåé空é´ä¸ã
ç±äºä¸å模æçæç embedding å¨è¯ä¹ç©ºé´ä¸å½¼æ¤å ¼å®¹ï¼å æ¤å¯ä»¥å°åç§åªä½åå¨å¨åä¸ä¸ªç´¢å¼ä¸ï¼å¹¶è·¨ææå 容è¿è¡ç»ä¸æ£ç´¢ã
ä¾å¦ï¼
-
ä½¿ç¨ææ¬æè¿°æ£ç´¢å¾çï¼
-
使ç¨ä¹¦é¢çè¯å¹é é³é¢ï¼
èæ é为æ¯ä¸ç§å 容类ååå«ç»´æ¤ä¸å¥ç¬ç«çå¤ç pipelineãæå ³è¿äº embedding å¦ä½çæçæ´å¤ä¿¡æ¯ï¼è¯·åé æ¨¡åææ¡£ã
éåï¼æä»¬å¨ Elasticsearch 9.4 ä¸å¼å ¥äº embedding query vector builderï¼ç¨äºå¨æ¥è¯¢é¶æ®µå¤ç夿¨¡æè¾å ¥ã
Query vector builder æ¯ä¸ç§éç¨å·¥å ·ï¼å¯å¨è¯·æ±æ§è¡è¿ç¨ä¸å°è¾å ¥è½¬æ¢ä¸ºåéã
ä¾å¦ï¼
-
text_embeddingquery vector builder ç¨äºä» æ¯æææ¬çæ¨¡ååææ¬è¾å ¥ï¼ -
lookupquery vector builder ç¨äºä»å·²æææ¡£ä¸è·ååéã
èæ°ç embedding query vector builder åä¸é¨é¢å夿¨¡ææ¨¡å设计ï¼å¯æ¥å夿¨¡æè¾å
¥ï¼å
æ¬ï¼
-
ææ¬ï¼
-
Base64 ç¼ç çäºè¿å¶å 容ã
å æ¤ï¼ä½ å¯ä»¥ä½¿ç¨æéåå½ååºæ¯çè¾å ¥æ¨¡æåèµ·æ¥è¯¢ï¼è Elasticsearch ä¼å¨æ¥è¯¢æ¶èªå¨çæå¯¹åºçåéã
æåè¡¥é½çä¸åæ¼å¾æ¯å¤æ¨¡ææåã
semantic_text å°èªå¨çæ embedding çè½å带å°äºææ¬ï¼è semantic åæ®µåå°è¿ç§èªå¨åä½éªæ©å±å°äºï¼
-
å¾åï¼
-
é³é¢ï¼
-
è§é¢ï¼
-
PDFã
ä»å 容æåå°æ¥è¯¢ï¼æ´ä¸ªè¿ç¨é½å¯ä»¥èªå¨å®æã
ç»å¶ç¬¬ä¸å¹
å¾ï¼ä½¿ç¨ semantic åæ®µå建索å¼
ä¸é¢å建ä¸ä¸ªå
å« semantic åæ®µçç´¢å¼ã
æä½é常ç®åï¼åªéå°å段类å设置为 semanticï¼å¹¶æå®å¸æä½¿ç¨ç inference endpoint å³å¯ã
`
1. PUT example-index
2. {
3. Â Â "mappings": {
4. Â Â Â Â "properties": {
5. Â Â Â Â Â Â "my_semantic_field": {
6. Â Â Â Â Â Â Â Â "type": "semantic",
7. Â Â Â Â Â Â Â Â "inference_id": ".jina-embeddings-v5-omni-small"
8. Â Â Â Â Â Â }
9. Â Â Â Â }
10. Â Â }
11. }
`AIå代ç 
卿¬ç¤ºä¾ä¸ï¼æä»¬ä½¿ç¨ .jina-embeddings-v5-omni-small inference endpointã
è¿æ¯æä»¬å
ç½®ç jina-embeddings-v5-omni inference serviceï¼å¨ææè½å¤è®¿é® Elastic Inference Serviceï¼EISï¼ çç¯å¢ä¸åå¯ä½¿ç¨ï¼å
æ¬ï¼
-
Serverless
-
Elastic Cloud Hostedï¼ECHï¼
-
å¯ç¨äº Cloud Connected Modeï¼CCMï¼ ç self-managed é¨ç½²
semanticåæ®µéè¦ä½¿ç¨ä¸ä¸ªéç¨embeddingtask type ç inference endpointï¼å 为embeddingtask type ä¸é¨ç¨äºå¤æ¨¡ææ¨¡åã
semanticåæ®µå¹¶ä¸æ¯ç¨æ¥æ¿ä»£semantic_textãå¨ä»¥ä¸åºæ¯ä¸ï¼ä»åºç»§ç»ä½¿ç¨
semantic_textï¼
åæ®µå¼ä» å 嫿æ¬ã
使ç¨
text_embeddingæsparse_embeddingtask typeãå ³äºä½æ¶åºä½¿ç¨
semanticè䏿¯semantic_textï¼è¯·åé ç¸å ³ææ¡£ã
ç´¢å¼å¾åãé³é¢ãè§é¢å PDF
è¦ç´¢å¼å¾åï¼åªéæä¾ä¸ä¸ªå¯¹è±¡ï¼å ¶ä¸ï¼
-
type设置为image -
valueå å«éç¨ Base64 ç¼ç ç Data URL æ ¼å¼çå¾åå 容ã
`
1. PUT example-index/_doc/example_doc_1
2. {
3. Â Â "my_semantic_field": {
4. Â Â Â Â "type": "image",
5. Â Â Â Â "value": "data:image/jpeg;base64,<base64-encoded-image-bytes>"
6. Â Â }
7. }
`AIå代ç
乿¯æå¯¹è±¡æ°ç»ï¼å æ¤å¯ä»¥å¨åä¸ä¸ªå段å¼ä¸ç´¢å¼å¤å¼ å¾çã
`
1. PUT example-index/_doc/example_doc_2
2. {
3. Â Â "my_semantic_field": [
4. Â Â Â Â {
5. Â Â Â Â Â Â "type": "image",
6. Â Â Â Â Â Â "value": "data:image/jpeg;base64,<base64-encoded-image-bytes>"
7. Â Â Â Â },
8. Â Â Â Â {
9. Â Â Â Â Â Â "type": "image",
10. Â Â Â Â Â Â "value": "data:image/jpeg;base64,<base64-encoded-image-bytes>"
11. Â Â Â Â }
12. Â Â ]
13. }
`AIå代ç 
semantic åæ®µä¹æ¯æææ¬å¼ï¼ä¸ semantic_text 䏿 ·ã
ä½ æ¢å¯ä»¥åç¬æä¾ææ¬å¼ï¼ä¹å¯ä»¥å°ææ¬å¼ä¸å¾ç弿··ååå¨å¨åä¸ä¸ªå段ä¸ï¼
`
1. PUT example-index/_doc/example_doc_3
2. {
3. Â Â "my_semantic_field": "a cat on a windowsill"Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â }
5. PUT example-index/_doc/example_doc_4
6. {
7. Â Â "my_semantic_field": [
8. Â Â Â Â "a cat on a windowsill",
9. Â Â Â Â {
10. Â Â Â Â Â Â "type": "image",
11. Â Â Â Â Â Â "value": "data:image/jpeg;base64,<base64-encoded-image-bytes>"
12. Â Â Â Â },
13. Â Â Â Â "a dog running in a park"
14. Â Â ]
15. }
`AIå代ç 
ææ¬å¼çå¤çæ¹å¼ä¸ semantic_text å®å
¨ä¸è´ï¼è¾é¿çææ¬ä¼æ ¹æ® inference service æå段 mapping ä¸é
ç½®ç chunking 设置 èªå¨è¿è¡ chunkã
èå¾åç夿¨¡æå 容åä¸ä¼è¿è¡ chunkãæ¯ä¸ªå¤æ¨¡æå 容é½ä¼ä½ä¸ºä¸ä¸ªç¬ç«ç chunk è¿è¡è¡¨ç¤ºã
semantic åæ®µè¿æ¯æå
¶ä»æ¨¡æï¼åªéå° type çå¼è®¾ç½®ä¸ºå¯¹åºçå
容类åå³å¯ã
ç®åæ¯æçç±»åå æ¬ï¼
-
image -
audio -
video -
pdf
ä¾å¦ï¼è¦ç´¢å¼ä¸ä¸ªè§é¢ï¼è¯·æ±å¦ä¸ï¼
`
1. PUT example-index/_doc/example_doc_5
2. {
3. Â Â "my_semantic_field": {
4. Â Â Â Â "type": "video",
5. Â Â Â Â "value": "data:video/mp4;base64,<base64-encoded-video-bytes>"
6. Â Â }
7. }
`AIå代ç
ä¸åæ¨¡åæ¯æç模æç±»åææä¸åã
jina-embeddings-v5-omniæ¨¡åæ¯æä¸è¿°ååºçæææ¨¡æã请æ¥é ä½ æä½¿ç¨æ¨¡åçææ¡£ï¼ä»¥ç¡®å®è¯¥æ¨¡åæ¯æåªäºæ¨¡æã
ä½¿ç¨ææ¬æ¥è¯¢è¿è¡å¾åæç´¢åè·¨æ¨¡ææ£ç´¢
è¦éè¿ææ¬æè¿°æ¥æ¾å¤æ¨¡æå
容ï¼å¯ä»¥å¨ semantic åæ®µä¸æ§è¡ match æ¥è¯¢ï¼
`
1. GET example-index/_search
2. {
3. Â Â "query": {
4. Â Â Â Â "match": {
5. Â Â Â Â Â Â "my_semantic_field": "a cat on a windowsill"
6. Â Â Â Â }
7. Â Â }
8. }
`AIå代ç
ä¸ semantic_text 䏿 ·ï¼Elasticsearch ä¼èªå¨ä½¿ç¨è¯¥å段å
³èç inference endpoint 为æ¥è¯¢ææ¬çæ embeddingãéåï¼Elasticsearch ä¼ä½¿ç¨è¯¥æ¥è¯¢ embedding è¿åè¯ä¹ä¸ç¸ä¼¼çå¹é
ç»æã
è¿ç§æ¥è¯¢æ¹å¼è®©ææ¬å°å¾åï¼text-to-imageï¼æç´¢åå¾é常ç®åï¼
åªéç´¢å¼ä¸å¼ å¾çï¼ç¶åä½¿ç¨ match æ¥è¯¢ï¼å°±å¯ä»¥éè¿ææ¬æè¿°æ£ç´¢è¯¥å¾çï¼
å®åæ ·éç¨äºå ¶ä»æ¨¡æï¼
-
ç´¢å¼å¤æ¨¡æè¾å ¥ï¼
-
ä½¿ç¨æè¿°æ§ææ¬è¿è¡æç´¢ï¼
-
æ£ç´¢ç¸å ³å 容ã
使ç¨å¾åãè§é¢åå ¶ä»å¤æ¨¡æè¾å ¥è¿è¡æ¥è¯¢
æä»¬ä¹å¯ä»¥ä½¿ç¨å¤æ¨¡æè¾å
¥è¿è¡æç´¢ï¼æ¹æ³æ¯å¨ knn æ¥è¯¢ä¸ä½¿ç¨ embedding query vector builderã
ä¾å¦ï¼æä»¬å¯ä»¥ä½¿ç¨ä¸å¼ å¾çè¿è¡æç´¢ï¼
`
1. GET example-index/_search
2. {
3. Â Â "query": {
4. Â Â Â Â "knn": {
5. Â Â Â Â Â Â "field": "my_semantic_field",
6. Â Â Â Â Â Â "query_vector_builder": {
7. Â Â Â Â Â Â Â Â "embedding": {
8. Â Â Â Â Â Â Â Â Â Â "input": {
9. Â Â Â Â Â Â Â Â Â Â Â Â "type": "image",
10. Â Â Â Â Â Â Â Â Â Â Â Â "value": "data:image/jpeg;base64,<base64-encoded-image-bytes>"
11. Â Â Â Â Â Â Â Â Â Â }
12. Â Â Â Â Â Â Â Â }
13. Â Â Â Â Â Â }
14. Â Â Â Â }
15. Â Â }
16. }
`AIå代ç 
input å¯¹è±¡çæ ¼å¼ä¸ç´¢å¼å¾åæ¶æä¾çæ ¼å¼ç¸åï¼
-
å°
type设置为imageï¼ -
å°
value设置为 Base64 ç¼ç ç data URLã
ä¸ä½¿ç¨ææ¬æè¿°è¿è¡æ¥è¯¢ç±»ä¼¼ï¼Elasticsearch ä¼èªå¨ä½¿ç¨è¯¥åæ®µå ³èç inference endpoint 为æ¥è¯¢å¾åçæ embeddingã
éåï¼Elasticsearch ä¼ä½¿ç¨è¯¥æ¥è¯¢ embedding è¿åè¯ä¹ä¸ç¸ä¼¼çå¹é ç»æã
ä¸ç´¢å¼æ¶ä¸æ ·ï¼å ¶ä»æ¨¡æä¹åå°æ¯æï¼ä½ä» éäºä½ ç inference endpoint ææ¯æç模æç±»åã
ä¾å¦ï¼ä½¿ç¨è§é¢ç段è¿è¡æç´¢æ¶ï¼è¯·æ±å¦ä¸ï¼
`
1. GET example-index/_search
2. {
3. Â Â "query": {
4. Â Â Â Â "knn": {
5. Â Â Â Â Â Â "field": "my_semantic_field",
6. Â Â Â Â Â Â "query_vector_builder": {
7. Â Â Â Â Â Â Â Â "embedding": {
8. Â Â Â Â Â Â Â Â Â Â "input": {
9. Â Â Â Â Â Â Â Â Â Â Â Â "type": "video",
10. Â Â Â Â Â Â Â Â Â Â Â Â "value": "data:video/mp4;base64,<base64-encoded-video-bytes>"
11. Â Â Â Â Â Â Â Â Â Â }
12. Â Â Â Â Â Â Â Â }
13. Â Â Â Â Â Â }
14. Â Â Â Â }
15. Â Â }
16. }
`AIå代ç 
æ©å±ç»åè½åï¼é«äº®ãretrievers 以åå ¶ä» semantic åæ®µåè½
semantic åæ®µå¹¶ä¸æ¯ä»é¶å¼å§æå»ºçãå®å»ºç«å¨ä¸ semantic_text ç¸åçåºç¡ä¹ä¸ï¼ç»§æ¿äº semantic_text çè¡ä¸ºæ¹å¼åæç¨æ§ï¼å¹¶å°è¿äºè½åæ©å±å°äºå¤æ¨¡æå
容ã
å®é
ä¸ï¼è¿æå³çä½ ä¹åä½¿ç¨ semantic_text æ¶ææ¡ç大é¨åå
容é½å¯ä»¥ç´æ¥è¿ç§»è¿æ¥ã
å¦æä½ ä¹åå·²ç»ä½¿ç¨è¿ semantic_textï¼é£ä¹ semantic åæ®µä¼è®©ä½ æå°é常çæã
ä¸é¢ååºäºä¸äºå¯ä»¥ç´æ¥ä½¿ç¨çåè½ã宿´å表请åé ç¸å ³ææ¡£ã
é«äº®æä½³å¹é ç chunk
å¦æä½ å¨ semantic åæ®µä¸ç´¢å¼äºå¤ä¸ªå¼ï¼å¯è½å¸æç¥éï¼
åªä¸ªå¼ä¸æ¥è¯¢çå¹é ç¨åº¦æé«ï¼
semantic highlighter å¯ä»¥ç¨äºè¿åæç¸å
³ç chunk ä½ä¸ºé«äº®ç段ï¼
`
1. GET example-index/_search
2. {
3. Â Â "query": {
4. Â Â Â Â "match": {
5. Â Â Â Â Â Â "my_semantic_field": "a cat on a windowsill"
6. Â Â Â Â }
7. Â Â },
8. Â Â "highlight": {
9. Â Â Â Â "fields": {
10. Â Â Â Â Â Â "my_semantic_field": {
11. Â Â Â Â Â Â Â Â "number_of_fragments": 2,
12. Â Â Â Â Â Â Â Â "order": "score"
13. Â Â Â Â Â Â }
14. Â Â Â Â }
15. Â Â }
16. }
`AIå代ç 
å° order 设置为 score 伿ç
§ç¸å
³æ§å¯¹è¿åç fragments è¿è¡æåºï¼è number_of_fragments ç¨äºéå¶è¿åç chunk æ°éã
ååºå¦ä¸ï¼
`
1. {
2. Â Â "hits": {
3. Â Â Â Â "hits": [
4. Â Â Â Â Â Â {
5. Â Â Â Â Â Â Â Â "_index": "example-index",
6. Â Â Â Â Â Â Â Â "_id": "example_doc_4",
7. Â Â Â Â Â Â Â Â "_source": {...},
8. Â Â Â Â Â Â Â Â "highlight": {
9. Â Â Â Â Â Â Â Â Â Â "my_semantic_field": [
10. Â Â Â Â Â Â Â Â Â Â Â Â "a cat on a windowsill",
11. Â Â Â Â Â Â Â Â Â Â Â Â "data:image/jpeg;base64,<base64-encoded-image-bytes>"
12. Â Â Â Â Â Â Â Â Â Â ]
13. Â Â Â Â Â Â Â Â }
14. Â Â Â Â Â Â }
15. Â Â Â Â ]
16. Â Â }
17. }
`AIå代ç 
注æï¼ç»è¿é«äº®ç夿¨¡æå¼ä¼ä½¿ç¨å ¶ data URL å½¢å¼è¿è¡è¡¨ç¤ºã
ä½¿ç¨ index options æ§å¶åééå
semantic åæ®µä¼å°å
¶ embedding åå¨å¨åºå±ç vector åæ®µä¸ï¼è index_options å¯ä»¥ç¨äºæ§å¶è¯¥åéåæ®µçç´¢å¼æ¹å¼ã
ä¾å¦ï¼å¯ä»¥éæ©éé»è®¤çéåçç¥ï¼
`
1. PUT example-index
2. {
3. Â Â "mappings": {
4. Â Â Â Â "properties": {
5. Â Â Â Â Â Â "my_semantic_field": {
6. Â Â Â Â Â Â Â Â "type": "semantic",
7. Â Â Â Â Â Â Â Â "inference_id": ".jina-embeddings-v5-omni-small",
8. Â Â Â Â Â Â Â Â "index_options": {
9. Â Â Â Â Â Â Â Â Â Â "dense_vector": {
10. Â Â Â Â Â Â Â Â Â Â Â Â "type": "int8_hnsw"
11. Â Â Â Â Â Â Â Â Â Â }
12. Â Â Â Â Â Â Â Â }
13. Â Â Â Â Â Â }
14. Â Â Â Â }
15. Â Â }
16. }
`AIå代ç 
Multi-field retrievers
semantic åæ®µæ¯æ linear å rrf retrievers ææ¯æç multi-field query formatã
ä½ æ é为æ¯ä¸ªå段æå¨ç¼åä¸ä¸ª inner retrieverï¼åªéæä¾ä¸ä¸ªç»ä¸ç query 以åä¸ä¸ª fields å表å³å¯ï¼åæ¶å¯ä»¥èªç±æ··å lexical åæ®µå semantic åæ®µï¼
`
1. GET example-index/_search
2. {
3. Â Â "retriever": {
4. Â Â Â Â "linear": {
5. Â Â Â Â Â Â "query": "a cat on a windowsill",
6. Â Â Â Â Â Â "fields": ["title", "my_semantic_field"],
7. Â Â Â Â Â Â "normalizer": "minmax"
8. Â Â Â Â }
9. Â Â }
10. }
`AIå代ç 
该 retriever ä¼èªå¨åºå lexical åæ®µå semantic åæ®µï¼åå«å¯¹æ¯ä¸ç»å段æ§è¡æ¥è¯¢ï¼å¹¶å¯¹ç»æè¿è¡å½ä¸åå¤çï¼ä½¿æ¯ä¸ç»å段对æç»æåºäº§çç¸åçè´¡ç®ï¼ä»èé¿å lexical å¹é ç»æåå¶ semantic å¹é ç»æã
Cross-cluster search
semantic åæ®µæ¯æ cross-cluster searchï¼CCSï¼ï¼å æ¤å¯ä»¥å¨å¤§åå¤é群é¨ç½²ä¸ä½¿ç¨è¯¥å段ã
åªéä½¿ç¨æ åç <cluster>:<index> æ ¼å¼ååºè¦æ¥è¯¢çç´¢å¼å³å¯ï¼
`
1. GET example-index,remote-cluster:remote-index/_search
2. {
3. Â Â "query": {
4. Â Â Â Â "match": {
5. Â Â Â Â Â Â "my_semantic_field": "a cat on a windowsill"
6. Â Â Â Â }
7. Â Â }
8. }
`AIå代ç
跨索å¼åè·¨é群æ¥è¯¢çåæ®µå¯ä»¥æ··å使ç¨ä¸åç inference endpointï¼èè¿äº endpoint å¯è½ä¼çæä¸åç query embeddingã
æç´¢è¯·æ±ä¼èªå¨ä¸ºæ¯ä¸ªè¢«æ¥è¯¢çåæ®µåºç¨æ£ç¡®ç query embeddingã
ä»ç»å¸èµ°åç产ï¼ä¼åç¨äºç产ç¯å¢ç夿¨¡æ embedding
å½ä½ å°å¤æ¨¡ææç´¢ä»å®éªé¶æ®µæå ¥ç产æ¶ï¼å¤æ¨¡æè¾å ¥ç大å°ä¼æä¸ºä¸ä¸ªå®é é®é¢ã
夿¨¡ææ°æ®éè¿ Base64 ç¼ç ç data URL æä¾ï¼å¹¶ä¸è¿äºæ°æ®ä¼åå¨å¨ç´¢å¼ä¸ãè¿äºå符串ç大å°å¯è½ä¼å¿«éå¢é¿ï¼
ä¸ä¸ªé«å辨çæä»¶å¯è½è¨èå°æ° MB çç¼ç ææ¬ï¼ä»è带æ¥ä»¥ä¸å½±åï¼
-
ç£çä¸çç´¢å¼å¤§å°ä¼æ¾èå¢å ï¼
-
å å«å¤æ¨¡ææ°æ®ç请æ±åååºä¼å大ï¼å¢å ä¼ è¾æ¶é´ä»¥å ingress/egress ææ¬ï¼
-
æ´å¤§ç夿¨¡æè¾å ¥ä¼å¯¼è´ inference éåº¦åæ ¢ã
å¥½æ¶æ¯æ¯ï¼ä½ å¹¶ä¸éè¦ä¿çè¿ä¹é«çä¿ç度ã
夿¨¡æ embedding æ¨¡åæ¬èº«ä¼å¨çæåéä¹åï¼å°æ¯ä¸ªè¾å ¥å缩为紧åç表示ãå æ¤ï¼ä¸ä¸ªæ´å°ãä¿ç度æ´ä½ç夿¨¡æè¾å ¥ï¼ä¾å¦ç¼©å°å°ºå¯¸åçå¾çææ´ä½ç ççé³é¢ç段ï¼ï¼é常å¯ä»¥çæä¸åå§å®æ´è¾å ¥é常ç¸ä¼¼ç embeddingï¼å¹¶ä¿æç¸è¿çæç´¢è´¨éã
è¿åæ ·éç¨äº PDF è¾å ¥ã
PDF é常ä¼è¢«å¤æ¨¡ææ¨¡å以è§è§æ¹å¼å¤çï¼å æ¤åªéè¦è¾¾å°è¶³å¤æ¯æä»¥ä¸æä½çè´¨éå³å¯ï¼
-
å¾å embeddingï¼
-
OCRã
è¾é¿ç PDF åºè¯¥æå为æ´å°çè¾å ¥ chunkï¼è¿æ ·çæç embedding æè½æ´åç¡®å°è¡¨ç¤ºæ¯ä¸ª chunkã
忍¡åæä¾è¾å°çè¾å ¥å¯ä»¥ï¼
-
ä¿æææ¡£æ´å ç²¾ç®ï¼
-
åå°ç´¢å¼å¤§å°åååºå¤§å°ï¼
-
å å¿« ingest é度ï¼
åæ¶ä¸ä¼ææ¾å½±åç¸å ³æ§ã
Elasticsearch éè¿ä¸ä¸ªä¿æ¤æºå¶è¿ä¸æ¥å¼ºåäºè¿ç§æä½³å®è·µï¼
indices.inference.max_binary_input_size é群设置éå¶æ¯ä¸ª binary input ç大å°ï¼é»è®¤å¼ä¸º 1 MBã
ä»»ä½è¶ è¿è¯¥éå¶çå个å¼é½ä¼è¢«æç»ï¼å¹¶è¿åæç¡®é误ãå æ¤ï¼è¿å¤§çè¾å ¥ä¼å¨ç´¢å¼é¶æ®µç´æ¥æ´é²ä¸ºå¯å¤ççé®é¢ï¼è䏿¯ææå¯¼è´ç´¢å¼è¨èã
å¨ self-hosted å ECH ç¯å¢ä¸ï¼å¯ä»¥éè¿ cluster settings API è°æ´è¯¥è®¾ç½®ã
å¨ Serverless ç¯å¢ä¸ï¼è¯¥è®¾ç½®ä¸å¯è°æ´ï¼1 MB æ¯ binary size çåºå®ä¸éã
å¨å¯è½çæ
åµä¸ï¼ä¹å»ºè®®ä½¿ç¨ source filteringï¼å° semantic åæ®µä»ååºä¸æé¤ã
ä¾å¦ï¼
`
1. GET example-index/_search
2. {Â
3. Â Â "_source": {
4. Â Â Â Â "excludes": ["my_semantic_field"]
5. Â Â },
6. Â Â "query": {
7. Â Â Â Â "match": {
8. Â Â Â Â Â Â "my_semantic_field": "a cat on a windowsill"
9. Â Â Â Â }
10. Â Â }
11. }
`AIå代ç 
è¿æ ·å¯ä»¥è®©ååºæ´å å°å·§ãæ§è½æ´é«ï¼å¹¶ä¸æ´å®¹æè§£æï¼å ä¸ºå¤æ¨¡ææ°æ®ä¸ä¼éçæ¯æ¬¡ååºä¸èµ·è¿åã
è¯ç¨ semantic åæ®µ
semantic åæ®µå·²å¨ Elasticsearch 9.5 å Serverless 䏿ä¾ã
å¼å§å è´¹è¯ç¨ï¼å¹¶ç«å³ä½éªã
åæï¼Semantic field: one field for multimodal search in Elasticsearch | Elasticsearch Labs
Aitishiku.com