1"use strict";(self.webpackChunkspring_ai_alibaba_website=self.webpackChunkspring_ai_alibaba_website||[]).push([[5072],{28453:(e,n,r)=>{r.d(n,{R:()=>t,x:()=>c});var i=r(96540);const s={},a=i.createContext(s);function t(e){const n=i.useContext(a);return i.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:t(e.components),i.createElement(a.Provider,{value:n},e.children)}},70953:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>o,contentTitle:()=>c,default:()=>h,frontMatter:()=>t,metadata:()=>i,toc:()=>d});const i=JSON.parse('{"id":"rag/vectordbs/opensearch","title":"Alibaba OpenSearch","description":"\u672c\u8282\u5c06\u6307\u5bfc\u60a8\u8bbe\u7f6e Alibaba OpenSearch VectorStore \u6765\u5b58\u50a8\u6587\u6863\u5d4c\u5165\u5e76\u6267\u884c\u76f8\u4f3c\u6027\u641c\u7d22\u3002","source":"@site/integration/rag/vectordbs/opensearch.md","sourceDirName":"rag/vectordbs","slug":"/rag/vectordbs/opensearch","permalink":"/integration/rag/vectordbs/opensearch","draft":false,"unlisted":false,"editUrl":"https://github.com/spring-ai-alibaba/website/tree/main/integration/rag/vectordbs/opensearch.md","tags":[],"version":"current","lastUpdatedBy":"Ken Liu","lastUpdatedAt":1768271906000,"frontMatter":{},"sidebar":"integrationSidebar","previous":{"title":"OceanBase","permalink":"/integration/rag/vectordbs/oceanbase"},"next":{"title":"Oracle Database 23ai - AI Vector Search","permalink":"/integration/rag/vectordbs/oracle"}}');var s=r(74848),a=r(28453);const t={},c="Alibaba OpenSearch",o={},d=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Auto-Configuration",id:"auto-configuration",level:2},{value:"Configuration Properties",id:"opensearch-properties",level:2},{value:"Manual Configuration",id:"manual-configuration",level:2},{value:"Accessing the Native Client",id:"accessing-the-native-client",level:2}];function l(e){const n={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,a.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"alibaba-opensearch",children:"Alibaba OpenSearch"})}),"\n",(0,s.jsxs)(n.p,{children:["\u672c\u8282\u5c06\u6307\u5bfc\u60a8\u8bbe\u7f6e Alibaba OpenSearch ",(0,s.jsx)(n.code,{children:"VectorStore"})," \u6765\u5b58\u50a8\u6587\u6863\u5d4c\u5165\u5e76\u6267\u884c\u76f8\u4f3c\u6027\u641c\u7d22\u3002"]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.a,{href:"https://www.aliyun.com/product/opensearch",children:"Alibaba OpenSearch"})," \u662f\u963f\u91cc\u4e91\u63d0\u4f9b\u7684\u667a\u80fd\u641c\u7d22\u670d\u52a1\uff0c\u652f\u6301\u5411\u91cf\u68c0\u7d22\u529f\u80fd\u3002OpenSearch \u63d0\u4f9b\u4e86\u9ad8\u6548\u7684\u5411\u91cf\u5b58\u50a8\u548c\u76f8\u4f3c\u6027\u641c\u7d22\u80fd\u529b\uff0c\u9002\u7528\u4e8e\u5927\u89c4\u6a21\u5411\u91cf\u6570\u636e\u7684\u5b58\u50a8\u548c\u68c0\u7d22\u573a\u666f\u3002"]}),"\n",(0,s.jsx)(n.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,s.jsx)(n.p,{children:"\u9996\u5148\uff0c\u60a8\u9700\u8981\uff1a"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsx)(n.li,{children:"\u4e00\u4e2a Alibaba OpenSearch \u5b9e\u4f8b"}),"\n",(0,s.jsx)(n.li,{children:"\u5b9e\u4f8b ID\u3001\u7aef\u70b9\uff08Endpoint\uff09\u3001\u8bbf\u95ee\u7528\u6237\u540d\u548c\u5bc6\u7801"}),"\n",(0,s.jsxs)(n.li,{children:["\u7528\u4e8e\u8ba1\u7b97\u6587\u6863\u5d4c\u5165\u7684 ",(0,s.jsx)(n.code,{children:"EmbeddingModel"})," \u5b9e\u4f8b\u3002\u6709\u591a\u4e2a\u9009\u9879\u53ef\u7528\uff1a","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\u5982\u679c\u9700\u8981\uff0c\u4e3a ",(0,s.jsx)(n.a,{href:"../embeddings#available-implementations",children:"EmbeddingModel"})," \u63d0\u4f9b\u4e00\u4e2a API key\uff0c\u7528\u4e8e\u751f\u6210 ",(0,s.jsx)(n.code,{children:"OpenSearchVectorStore"})," \u5b58\u50a8\u7684\u5d4c\u5165\u3002"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["\u5411\u91cf\u5b58\u50a8\u5b9e\u73b0\u53ef\u4ee5\u4e3a\u60a8\u521d\u59cb\u5316\u6240\u9700\u7684 schema\uff0c\u4f46\u60a8\u5fc5\u987b\u901a\u8fc7\u5728 ",(0,s.jsx)(n.code,{children:"application.properties"})," \u6587\u4ef6\u4e2d\u8bbe\u7f6e ",(0,s.jsx)(n.code,{children:"spring.ai.alibaba.vectorstore.opensearch.initialize-schema=true"})," \u6765\u9009\u62e9\u52a0\u5165\u3002"]}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"\u6ce8\u610f\uff1a"})," \u8fd9\u662f\u4e00\u4e2a\u7834\u574f\u6027\u66f4\u6539\uff01\u5728 Spring AI \u7684\u65e9\u671f\u7248\u672c\u4e2d\uff0c\u6b64 schema \u521d\u59cb\u5316\u9ed8\u8ba4\u53d1\u751f\u3002"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"auto-configuration",children:"Auto-Configuration"}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"\u6ce8\u610f\uff1a"}),"\nSpring AI auto-configuration\u3001starter modules \u7684 artifact \u540d\u79f0\u53d1\u751f\u4e86\u91cd\u5927\u53d8\u5316\u3002\n\u8bf7\u53c2\u9605 ",(0,s.jsx)(n.a,{href:"https://docs.spring.io/spring-ai/reference/upgrade-notes.html",children:"upgrade notes"})," \u4e86\u89e3\u66f4\u591a\u4fe1\u606f\u3002"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"\u7136\u540e\u5c06 Alibaba OpenSearch VectorStore boot starter \u4f9d\u8d56\u9879\u6dfb\u52a0\u5230\u60a8\u7684\u9879\u76ee\uff1a"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-xml",children:"<dependency>\n\t<groupId>com.alibaba.cloud.ai</groupId>\n\t<artifactId>spring-ai-alibaba-starter-store-opensearch</artifactId>\n</dependency>\n"})}),"\n",(0,s.jsxs)(n.p,{children:["\u6216\u6dfb\u52a0\u5230\u60a8\u7684 Gradle ",(0,s.jsx)(n.code,{children:"build.gradle"})," \u6784\u5efa\u6587\u4ef6\u3002"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-groovy",children:"dependencies {\n implementation 'com.alibaba.cloud.ai:spring-ai-alibaba-starter-store-opensearch'\n}\n"})}),"\n",(0,s.jsxs)(n.p,{children:["\u5411\u91cf\u5b58\u50a8\u5b9e\u73b0\u53ef\u4ee5\u4e3a\u60a8\u521d\u59cb\u5316\u6240\u9700\u7684 schema\uff0c\u4f46\u60a8\u5fc5\u987b\u901a\u8fc7\u5728 ",(0,s.jsx)(n.code,{children:"application.properties"})," \u6587\u4ef6\u4e2d\u8bbe\u7f6e ",(0,s.jsx)(n.code,{children:"spring.ai.alibaba.vectorstore.opensearch.enabled=true"})," \u6765\u9009\u62e9\u52a0\u5165\u3002"]}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"\u6ce8\u610f\uff1a"})," \u8fd9\u662f\u4e00\u4e2a\u7834\u574f\u6027\u66f4\u6539\uff01\u5728 Spring AI \u7684\u65e9\u671f\u7248\u672c\u4e2d\uff0c\u6b64 schema \u521d\u59cb\u5316\u9ed8\u8ba4\u53d1\u751f\u3002"]}),"\n"]}
1),"\n",(0,s.jsxs)(n.p,{children:["\u8bf7\u67e5\u770b ",(0,s.jsx)(n.a,{href:"#opensearch-properties",children:"configuration parameters"})," \u5217\u8868\u4ee5\u4e86\u89e3\u5411\u91cf\u5b58\u50a8\u7684\u9ed8\u8ba4\u503c\u548c\u914d\u7f6e\u9009\u9879\u3002"]}),"\n",(0,s.jsxs)(n.p,{children:["\u6b64\u5916\uff0c\u60a8\u9700\u8981\u4e00\u4e2a\u914d\u7f6e\u7684 ",(0,s.jsx)(n.code,{children:"EmbeddingModel"})," bean\u3002\u8bf7\u53c2\u9605 ",(0,s.jsx)(n.a,{href:"../embeddings#available-implementations",children:"EmbeddingModel"})," \u90e8\u5206\u4e86\u89e3\u66f4\u591a\u4fe1\u606f\u3002"]}),"\n",(0,s.jsxs)(n.p,{children:["\u73b0\u5728\u60a8\u53ef\u4ee5\u5728\u5e94\u7528\u7a0b\u5e8f\u4e2d\u81ea\u52a8\u88c5\u914d ",(0,s.jsx)(n.code,{children:"OpenSearchVectorStore"})," \u4f5c\u4e3a\u5411\u91cf\u5b58\u50a8\uff1a"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-java",children:'@Autowired VectorStore vectorStore;\n\n// ...\n\nList<Document> documents = List.of(\n new Document("Spring AI rocks!! Spring AI rocks!! Spring AI rocks!! Spring AI rocks!! Spring AI rocks!!", Map.of("meta1", "meta1")),\n new Document("The World is Big and Salvation Lurks Around the Corner"),\n new Document("You walk forward facing the past and you turn back toward the future.", Map.of("meta2", "meta2")));\n\n// \u5c06\u6587\u6863\u6dfb\u52a0\u5230 Alibaba OpenSearch\nvectorStore.add(documents);\n\n// \u68c0\u7d22\u4e0e\u67e5\u8be2\u76f8\u4f3c\u7684\u6587\u6863\nList<Document> results = vectorStore.similaritySearch(SearchRequest.builder().query("Spring").topK(5).build());\n'})}),"\n",(0,s.jsx)(n.h2,{id:"opensearch-properties",children:"Configuration Properties"}),"\n",(0,s.jsxs)(n.p,{children:["\u8981\u8fde\u63a5\u5230 Alibaba OpenSearch \u5e76\u4f7f\u7528 ",(0,s.jsx)(n.code,{children:"OpenSearchVectorStore"}),"\uff0c\u60a8\u9700\u8981\u63d0\u4f9b\u5b9e\u4f8b\u7684\u8bbf\u95ee\u8be6\u7ec6\u4fe1\u606f\u3002\n\u53ef\u4ee5\u901a\u8fc7 Spring Boot \u7684 ",(0,s.jsx)(n.code,{children:"application.yml"})," \u63d0\u4f9b\u7b80\u5355\u914d\u7f6e\uff1a"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-yaml",children:'spring:\n ai:\n alibaba:\n vectorstore:\n opensearch:\n enabled: true\n instance-id: <your-instance-id>\n endpoint: <your-endpoint>\n access-user-name: <your-access-user-name>\n access-pass-word: <your-access-password>\n options:\n initialize-schema: true\n table-name: spring_ai_opensearch_vector_store\n primary-key-field: id\n index: saa_default_index\n similarity-function: cosinesimil\n output-fields:\n - content\n - metadata\n dimensions: 1536\n mapping-json: |\n {\n "name": "api",\n "partitionCount": 1,\n "primaryKey": "id",\n "fieldSchema": {\n "id": "INT64",\n "content": "STRING",\n "metadata": "STRING",\n "embedding": "MULTI_FLOAT"\n },\n "vectorIndex": [\n {\n "indexName": "saa_default_index",\n "vectorField": "embedding",\n "vectorIndexType": "hnsw",\n "dimension": "1536",\n "distanceType": "InnerProduct"\n }\n ]\n }\n'})}),"\n",(0,s.jsxs)(n.p,{children:["\u4ee5 ",(0,s.jsx)(n.code,{children:"spring.ai.alibaba.vectorstore.opensearch.*"})," \u5f00\u5934\u7684\u5c5e\u6027\u7528\u4e8e\u914d\u7f6e ",(0,s.jsx)(n.code,{children:"OpenSearchVectorStore"}),"\uff1a"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Property"}),(0,s.jsx)(n.th,{children:"Description"}),(0,s.jsx)(n.th,{children:"Default Value"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"spring.ai.alibaba.vectorstore.opensearch.enabled"})}),(0,s.jsx)(n.td,{children:"\u662f\u5426\u542f\u7528 Alibaba OpenSearch \u5411\u91cf\u5b58\u50a8"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"false"})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"spring.ai.alibaba.vectorstore.opensearch.instance-id"})}),(0,s.jsx)(n.td,{children:"OpenSearch \u5b9e\u4f8b ID"}),(0,s.jsx)(n.td,{children:"-"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"spring.ai.alibaba.vectorstore.opensearch.endpoint"})}
1),(0,s.jsx)(n.td,{children:"OpenSearch \u7aef\u70b9\u5730\u5740"}),(0,s.jsx)(n.td,{children:"-"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"spring.ai.alibaba.vectorstore.opensearch.access-user-name"})}),(0,s.jsx)(n.td,{children:"\u8bbf\u95ee\u7528\u6237\u540d"}),(0,s.jsx)(n.td,{children:"-"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"spring.ai.alibaba.vectorstore.opensearch.access-pass-word"})}),(0,s.jsx)(n.td,{children:"\u8bbf\u95ee\u5bc6\u7801"}),(0,s.jsx)(n.td,{children:"-"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"spring.ai.alibaba.vectorstore.opensearch.options.initialize-schema"})}),(0,s.jsx)(n.td,{children:"\u662f\u5426\u521d\u59cb\u5316\u6240\u9700\u7684 schema"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"false"})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"spring.ai.alibaba.vectorstore.opensearch.options.table-name"})}),(0,s.jsx)(n.td,{children:"\u5b58\u50a8\u5411\u91cf\u7684\u8868\u540d\u79f0"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"spring_ai_opensearch_vector_store"})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"spring.ai.alibaba.vectorstore.opensearch.options.primary-key-field"})}),(0,s.jsx)(n.td,{children:"\u4e3b\u952e\u5b57\u6bb5\u540d\u79f0"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"id"})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"spring.ai.alibaba.vectorstore.opensearch.options.index"})}),(0,s.jsx)(n.td,{children:"\u5411\u91cf\u7d22\u5f15\u540d\u79f0"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"saa_default_index"})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"spring.ai.alibaba.vectorstore.opensearch.options.similarity-function"})}),(0,s.jsx)(n.td,{children:"\u76f8\u4f3c\u5ea6\u51fd\u6570\uff08cosinesimil\u3001l2 \u7b49\uff09"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"cosinesimil"})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"spring.ai.alibaba.vectorstore.opensearch.options.output-fields"})}),(0,s.jsx)(n.td,{children:"\u641c\u7d22\u7ed3\u679c\u8f93\u51fa\u7684\u5b57\u6bb5\u5217\u8868"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:'["content", "metadata"]'})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"spring.ai.alibaba.vectorstore.opensearch.options.dimensions"})}),(0,s.jsx)(n.td,{children:"\u5411\u91cf\u7ef4\u5ea6"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"1536"})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"spring.ai.alibaba.vectorstore.opensearch.options.mapping-json"})}),(0,s.jsx)(n.td,{children:"\u7d22\u5f15\u6620\u5c04 JSON \u914d\u7f6e"}),(0,s.jsx)(n.td,{children:"-"})]})]})]}),"\n",(0,s.jsx)(n.h2,{id:"manual-configuration",children:"Manual Configuration"}),"\n",(0,s.jsxs)(n.p,{children:["\u4e0d\u4f7f\u7528 Spring Boot auto-configuration\uff0c\u60a8\u53ef\u4ee5\u624b\u52a8\u914d\u7f6e Alibaba OpenSearch \u5411\u91cf\u5b58\u50a8\u3002\u4e3a\u6b64\uff0c\u60a8\u9700\u8981\u5c06 ",(0,s.jsx)(n.code,{children:"spring-ai-alibaba-starter-store-opensearch"})," \u6dfb\u52a0\u5230\u60a8\u7684\u9879\u76ee\uff1a"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-xml",children:"<dependency>\n\t<groupId>com.alibaba.cloud.ai</groupId>\n\t<artifactId>spring-ai-alibaba-starter-store-opensearch</artifactId>\n</dependency>\n"})}),"\n",(0,s.jsxs)(n.p,{children:["\u6216\u6dfb\u52a0\u5230\u60a8\u7684 Gradle ",(0,s.jsx)(n.code,{children:"build.gradle"})," \u6784\u5efa\u6587\u4ef6\uff1a"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-groovy",children:"dependencies {\n implementation 'com.alibaba.cloud.ai:spring-ai-alibaba-starter-store-opensearch'\n}\n"})}),"\n",(0,s.jsxs)(n.p,{children:["\u521b\u5efa ",(0,s.jsx)(n.code,{children:"OpenSearchApi"})," bean\uff1a"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-java",children:'@Bean\npublic OpenSearchApi openSearchApi() {\n OpenSearchVectorStoreProperties properties = new OpenSearchVectorStoreProperties();\n properties.setInstanceId("<your-instance-id>");\n properties.setEndpoint("<your-endpoint>");\n properties.setAccessUserName("<your-access-user-name>");\n properties.setAccessPassWord("<your-access-password>");\n return new OpenSearchApi(properties);\n}\n'})}),"\n",(0,s.jsxs)(n.p,{children:["\u7136\u540e\u4f7f\u7528\u6784\u5efa\u5668\u6a21\u5f0f\u521b\u5efa ",(0,s.jsx)(n.code,{children:"OpenSearchVectorStore"})," bean\uff1a"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-java",children:'@Bean\npublic VectorStore vectorStore(OpenSearchApi openSearchApi, EmbeddingModel embeddingModel) {\n OpenSearchVectorStoreOptions options = new OpenSearchVectorStoreOptions();\n options.setTableName("custom_vector_store");\n options.setPrimaryKeyField("id");\n options.setIndex("custom_index");
1\n options.setSimilarityFunction("cosinesimil");\n options.setDimensions(1536);\n options.setInitializeSchema(true);\n \n return OpenSearchVectorStore.builder(openSearchApi, embeddingModel)\n .options(options)\n .batchingStrategy(new TokenCountBatchingStrategy())\n .build();\n}\n\n// \u8fd9\u53ef\u4ee5\u662f\u4efb\u4f55 EmbeddingModel \u5b9e\u73b0\n@Bean\npublic EmbeddingModel embeddingModel() {\n return new OpenAiEmbeddingModel(new OpenAiApi(System.getenv("OPENAI_API_KEY")));\n}\n'})}),"\n",(0,s.jsx)(n.h2,{id:"accessing-the-native-client",children:"Accessing the Native Client"}),"\n",(0,s.jsxs)(n.p,{children:["Alibaba OpenSearch Vector Store \u5b9e\u73b0\u901a\u8fc7 ",(0,s.jsx)(n.code,{children:"getNativeClient()"})," \u65b9\u6cd5\u63d0\u4f9b\u5bf9\u5e95\u5c42\u539f\u751f OpenSearch \u5ba2\u6237\u7aef\uff08",(0,s.jsx)(n.code,{children:"OpenSearchApi"}),"\uff09\u7684\u8bbf\u95ee\uff1a"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-java",children:"OpenSearchVectorStore vectorStore = context.getBean(OpenSearchVectorStore.class);\nOptional<OpenSearchApi> nativeClient = vectorStore.getNativeClient();\n\nif (nativeClient.isPresent()) {\n OpenSearchApi api = nativeClient.get();\n // \u4f7f\u7528\u539f\u751f\u5ba2\u6237\u7aef\u8fdb\u884c OpenSearch \u7279\u5b9a\u64cd\u4f5c\n}\n"})}),"\n",(0,s.jsxs)(n.p,{children:["\u539f\u751f\u5ba2\u6237\u7aef\u4f7f\u60a8\u53ef\u4ee5\u8bbf\u95ee\u53ef\u80fd\u672a\u901a\u8fc7 ",(0,s.jsx)(n.code,{children:"VectorStore"})," \u63a5\u53e3\u516c\u5f00\u7684 OpenSearch \u7279\u5b9a\u529f\u80fd\u548c\u64cd\u4f5c\u3002"]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.