{"id":377164,"date":"2024-05-26T21:00:38","date_gmt":"2024-05-26T21:00:38","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=377164"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=377164","title":{"rendered":"<span>\u0412\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0435 \u0411\u0414 vs \u0422\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u2014 \u0447\u0430\u0441\u0442\u044c 2<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0412 <a href=\"https:\/\/habr.com\/ru\/articles\/807957\/\" rel=\"noopener noreferrer nofollow\">\u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438<\/a> \u0438\u0437 \u0442\u0435\u0441\u0442\u043e\u0432 \u0441\u0442\u0430\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u0441 \u0432 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u043c \u043f\u043e\u0438\u0441\u043a\u0435 \u0441 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043c\u0438 \u0447\u0442\u043e-\u0442\u043e \u043d\u0435 \u0442\u0430\u043a. \u0418 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043d\u0438\u0437\u043a\u0430\u044f \u0434\u043b\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b RAG (retrieval augmentation generation) <\/p>\n<blockquote>\n<p>\u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u0442\u043e\u043b\u043a\u043e\u0432\u044b\u043c \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u043c \u041e\u0436\u0435\u0433\u043e\u0432\u0430, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c 2 \u0442\u0438\u043f\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432:<\/p>\n<ol>\n<li>\n<p>\u041f\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u043c\u0443 \u0438\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e \u043d\u0430\u0439\u0442\u0438 \u0442\u0435\u0440\u043c\u0438\u043d<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0439\u0442\u0438 \u0442\u0435\u0440\u043c\u0438\u043d, \u0447\u0442\u043e \u043e\u043d \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442<\/p>\n<\/li>\n<\/ol>\n<\/blockquote>\n<p>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0442\u0438\u043f\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 \u0442\u0435\u0440\u043c\u0438\u043d. <a href=\"https:\/\/habr.com\/ru\/articles\/807957\/\" rel=\"noopener noreferrer nofollow\">\u0414\u0430, \u044d\u0442\u043e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0418 \u0446\u0438\u0444\u0440\u044b \u044d\u0442\u043e \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044e\u0442<\/a>. \u0422\u0435\u043f\u0435\u0440\u044c \u0446\u0435\u043b\u044c \u043d\u0430\u0439\u0442\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u0434\u043b\u044f \u0442\u0430\u043a\u0438\u0445 \u043a\u0435\u0439\u0441\u043e\u0432. \u0410 \u043d\u0435 \u043d\u0430\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u043d\u0430 \u043c\u043e\u0438 \u0433\u0440\u0430\u0431\u043b\u0438)<\/p>\n<p>\u041e\u0434\u043d\u0438\u043c \u0438\u0437 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0440\u0435\u0448\u0435\u043d\u0438\u044f &#8212; \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0433\u0438\u0431\u0440\u0438\u0434\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a, \u043d\u0435 \u0432\u0441\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0435 \u0411\u0414 \u0435\u0433\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442:<\/p>\n<ol>\n<li>\n<p><a href=\"https:\/\/github.com\/chroma-core\/chroma\/issues\/1330\" rel=\"noopener noreferrer nofollow\">Chroma &#8212; \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/docs.pinecone.io\/guides\/data\/understanding-hybrid-search\" rel=\"noopener noreferrer nofollow\">Pinecone &#8212; public preview<\/a>\u00a0&#8212; \u043d\u0435\u0442\u0443 \u0432 Docker &#8212;\u00a0<a href=\"https:\/\/community.pinecone.io\/t\/pinecone-and-docker\/4877\" rel=\"noopener noreferrer nofollow\">\u0437\u0430\u043f\u0440\u043e\u0441 \u0444\u0438\u0447\u0438<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/wiki.lfaidata.foundation\/display\/MIL\/Feature+plans\" rel=\"noopener noreferrer nofollow\">Milvus &#8212; \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/weaviate.io\/developers\/weaviate\/search\/hybrid\" rel=\"noopener noreferrer nofollow\">Weaviate &#8212; \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/qdrant.tech\/articles\/hybrid-search\/\" rel=\"noopener noreferrer nofollow\">Qdrant &#8212; \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.elastic.co\/search-labs\/tutorials\/search-tutorial\/vector-search\/hybrid-search\" rel=\"noopener noreferrer nofollow\">Elasticsearch &#8212; \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/opensearch.org\/docs\/latest\/search-plugins\/hybrid-search\/\" rel=\"noopener noreferrer nofollow\">Opensearch &#8212; \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442<\/a><\/p>\n<\/li>\n<\/ol>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a Chroma, Pinecone, Milvus \u0433\u0438\u0431\u0440\u0438\u0434\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u043f\u043e\u043a\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442, \u0442\u043e \u0432\u044b\u0431\u043e\u0440 \u043f\u0430\u043b \u043d\u0430 <a href=\"https:\/\/weaviate.io\/\" rel=\"noopener noreferrer nofollow\">Weaviate<\/a>.<\/p>\n<h2>Weaviate<\/h2>\n<p>\u0411\u044b\u0441\u0442\u0440\u043e \u043f\u0440\u043e\u0431\u0435\u0436\u0430\u0432\u0448\u0438\u0441\u044c \u043f\u043e <a href=\"https:\/\/weaviate.io\/developers\/weaviate\/search\/hybrid\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a>, \u0432\u0440\u043e\u0434\u0435 \u043a\u0430\u043a \u0432\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u043e &#8212; \u043d\u0430\u0434\u043e \u0431\u0440\u0430\u0442\u044c \u0432 \u0442\u0435\u0441\u0442. <\/p>\n<p>\u041f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 Weaviate \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e docker-compose.yaml<\/p>\n<pre><code class=\"yaml\">version: '3.4' services:   weaviate:     command:     - --host     - 0.0.0.0     - --port     - '8080'     - --scheme     - http     image: cr.weaviate.io\/semitechnologies\/weaviate:1.24.11     ports:     - 8080:8080     - 50051:50051     volumes:     - weaviate_data:\/var\/lib\/weaviate     restart: on-failure:0     environment:       QUERY_DEFAULTS_LIMIT: 25       AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true'       PERSISTENCE_DATA_PATH: '\/var\/lib\/weaviate'       #Hugginface usage       DEFAULT_VECTORIZER_MODULE: text2vec-huggingface       HUGGINGFACE_APIKEY: hf_****************************       #Dafault usage       #DEFAULT_VECTORIZER_MODULE: 'none'       ENABLE_MODULES: 'text2vec-cohere,text2vec-huggingface,text2vec-palm,text2vec-openai,generative-openai,generative-cohere,generative-palm,ref2vec-centroid,reranker-cohere,qna-openai'       CLUSTER_HOSTNAME: 'node1' volumes:   weaviate_data:<\/code><\/pre>\n<p>\u0421\u0442\u0430\u0432\u0438\u043c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438<\/p>\n<pre><code class=\"bash\">%pip install -U sentence-transformers ipywidgets weaviate-client chardet charset-normalizer<\/code><\/pre>\n<p>\u0413\u0440\u0443\u0437\u0438\u043c \u0434\u0430\u0442\u0430\u0441\u0435\u0442, \u0442\u0430\u043a\u0436\u0435 \u043a\u0430\u043a \u0438 \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0442\u043e\u0447\u044c-\u0432-\u0442\u043e\u0447\u044c.<\/p>\n<p>\u0422\u044f\u043d\u0435\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u043c\u043e\u0434\u0435\u043b\u0435\u0439, \u043a\u0430\u043a \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0442\u0435\u0441\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0442\u043e\u043c \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c<\/p>\n<pre><code class=\"python\">from weaviate.classes.config import VectorDistances models = [     \"intfloat\/multilingual-e5-large\",     \"sentence-transformers\/paraphrase-multilingual-mpnet-base-v2\",     \"symanto\/sn-xlm-roberta-base-snli-mnli-anli-xnli\",     \"cointegrated\/LaBSE-en-ru\",     \"sentence-transformers\/LaBSE\" ]  distances = [     VectorDistances.L2_SQUARED,     VectorDistances.DOT,     VectorDistances.COSINE ]<\/code><\/pre>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043a\u0430\u043a \u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0442\u0435\u0441\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0438 \u0433\u0440\u0443\u0437\u0438\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0411\u0414 \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e <a href=\"https:\/\/weaviate.io\/developers\/weaviate\/model-providers\/huggingface\/embeddings\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a>.<\/p>\n<pre><code class=\"python\">from tqdm import tqdm  from weaviate.classes.config import Configure, Property, DataType, Tokenization, VectorDistances  def create_collection(client, model_name, distance):          client.collections.create(         \"title\",         vectorizer_config=[             Configure.NamedVectors.text2vec_huggingface(                 name=\"title_vector\",                 source_properties=[\"title\"],                 model=model_name,                 vector_index_config=Configure.VectorIndex.hnsw(distance_metric=distance)             )         ]     )      collection = client.collections.get(\"title\")          with collection.batch.dynamic() as batch:         for i, data in tqdm(dataset.iterrows()):             obj = {                 \"title\": data[\"title\"]             }             batch.add_object(                 properties = obj             )      if len(collection.batch.failed_objects) > 0:          print(collection.batch.failed_objects)  def delete_collection(client):     client.collections.delete(\"title\") <\/code><\/pre>\n<p>\u0413\u0440\u0443\u0437\u0438\u043c \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u0434\u0430<\/p>\n<pre><code class=\"python\">delete_collection(client) create_collection(client, \"cointegrated\/LaBSE-en-ru\", VectorDistances.COSINE)<\/code><\/pre>\n<p>\u0412\u043e\u0442 \u0442\u0443\u0442 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u041d\u041e \ud83d\ude41<\/p>\n<pre><code>1000it [00:04, 204.12it\/s] [ErrorObject(message='vectorize target vector title_vector: update vector: failed with status: 429 error: Rate limit reached.  You reached free usage limit (reset hourly). Please subscribe to a plan at https:\/\/huggingface.co\/pricing to use the API at this rate'...<\/code><\/pre>\n<p>\u041e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e Weviate \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 Huggingface \u043d\u0435 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e, \u043a\u0430\u043a \u0434\u0435\u043b\u0430\u044e\u0442 \u0434\u0440\u0443\u0433\u0438\u0435 \u0411\u0414 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438. \u0410 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b hugginface \u0447\u0435\u0440\u0435\u0437 API.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4a8\/9fc\/413\/4a89fc4130532d5ac1b4645aac883ea7.png\" alt=\"\u0421\u0445\u0435\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b Weaviate \u0438 huggingface\" title=\"\u0421\u0445\u0435\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b Weaviate \u0438 huggingface\" width=\"1316\" height=\"716\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4a8\/9fc\/413\/4a89fc4130532d5ac1b4645aac883ea7.png\"\/><\/p>\n<div><figcaption>\u0421\u0445\u0435\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b Weaviate \u0438 huggingface<\/figcaption><\/div>\n<\/figure>\n<p>\u041c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u043c\u043e\u0434\u0435\u043b\u0438, \u043d\u043e \u0438\u0445 \u043d\u0443\u0436\u043d\u043e<a href=\"https:\/\/weaviate.io\/developers\/weaviate\/modules\/retriever-vectorizer-modules\/text2vec-transformers#build-a-model\" rel=\"noopener noreferrer nofollow\"> \u0437\u0430\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0432 Docker \u043e\u0431\u0440\u0430\u0437<\/a> \u0438 \u043f\u043e\u0442\u043e\u043c \u043a\u043e\u043d\u043d\u0435\u043a\u0442\u0438\u0442\u044c \u043a Weaviate.<\/p>\n<p>\u0420\u0435\u0448\u0438\u043b \u043d\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c \u0442\u0435\u0441\u0442, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d \u0432\u044b\u0431\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0437\u0430 \u0440\u0430\u043c\u043a\u0438 &#171;\u043f\u043e-\u0431\u044b\u0441\u0442\u0440\u043e\u043c\u0443&#187; + \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u043c\u043e\u0434\u0435\u043b\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a Qdrant.<\/p>\n<h2>Qdrant<\/h2>\n<p>\u041f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u043c Docker-\u043e\u0431\u0440\u0430\u0437 \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e <a href=\"https:\/\/qdrant.tech\/documentation\/guides\/installation\/\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 <\/a><\/p>\n<pre><code>docker run -p 6333:6333 -v $PWD\/qdrant_storage:\/qdrant\/storage qdrant\/qdrant<\/code><\/pre>\n<p>\u0421\u0442\u0430\u0432\u0438\u043c \u043d\u0443\u0436\u043d\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b<\/p>\n<pre><code class=\"bash\">%pip install -U qdrant-client<\/code><\/pre>\n<p>\u0413\u0440\u0443\u0437\u0438\u043c \u0434\u0430\u0442\u0430\u0441\u0435\u0442, \u0442\u0430\u043a\u0436\u0435 \u043a\u0430\u043a \u0438 \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0442\u043e\u0447\u044c-\u0432-\u0442\u043e\u0447\u044c.<\/p>\n<p>\u0422\u044f\u043d\u0435\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u043c\u043e\u0434\u0435\u043b\u0435\u0439, \u043a\u0430\u043a \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0442\u0435\u0441\u0442\u0435 + <em>sentence-transformers\/all-MiniLM-L6-v2<\/em> \u0438  sentence-transformers\/paraphrase-multilingual-MiniLM-L12-v. \u0414\u043e\u0431\u0430\u0432\u0438\u043b \u043c\u043e\u0434\u0435\u043b\u0435\u0439, \u0442\u0430\u043a \u043a\u0430\u043a  FastEmbed \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d <a href=\"https:\/\/qdrant.github.io\/fastembed\/examples\/Supported_Models\/\" rel=\"noopener noreferrer nofollow\">\u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 qdrant. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u0443\u0434\u0435\u043c \u043b\u043e\u0432\u0438\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443 <em>&#171;Unsupported embedding model&#8230;&#187;<\/em><\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0438 \u0433\u0440\u0443\u0437\u0438\u043c \u0434\u0430\u043d\u043d\u044b\u0435, \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e <a href=\"https:\/\/qdrant.tech\/documentation\/tutorials\/hybrid-search-fastembed\/\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a><\/p>\n<pre><code class=\"python\">from qdrant_client import QdrantClient, models as qdrant_models  client = QdrantClient(url=\"http:\/\/localhost:6333\") COLLECTION_NAME=\"termins\"  def create_collection(client, model_name):     client.set_model(model_name)     client.create_collection(         collection_name=COLLECTION_NAME,         vectors_config=client.get_fastembed_vector_params()     )     add_data()  def add_data():     ids = list(map(int, dataset.index.values.tolist()))      client.add(         collection_name=COLLECTION_NAME,         ids = ids, documents=dataset[\"title\"].tolist(), batch_size=2, parallel=0     )   def delete_collection():     client.delete_collection(collection_name=COLLECTION_NAME)<\/code><\/pre>\n<p>\u0412 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u043e\u0442\u0432\u0435\u0442\u0430 \u0432 \u0411\u0414 \u043e\u0441\u043e\u0431\u043e \u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445. \u041d\u043e \u043c\u044b \u0437\u0430\u0431\u0438\u0440\u0430\u0435\u043c \u0441 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u043e\u0446\u0435\u043d\u043a\u043e\u0439, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 qdrant \u043e\u0446\u0435\u043d\u043a\u0430, \u0430 \u043d\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043a\u0430\u043a \u0432 Chroma.<\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0442\u0435\u0441\u0442 \u0438\u0438\u0438\u0438&#8230;<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th data-colwidth=\"100\" width=\"100\">\n<p>found<\/p>\n<\/th>\n<th>\n<p>model_name<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td data-colwidth=\"100\" width=\"100\">\n<p align=\"left\">100<\/p>\n<\/td>\n<td>\n<p align=\"left\">intfloat\/multilingual-e5-large<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"100\" width=\"100\">\n<p align=\"left\">100<\/p>\n<\/td>\n<td>\n<p align=\"left\">sentence-transformers\/paraphrase-multilingual-mpnet-base-v2<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"100\" width=\"100\">\n<p align=\"left\">100<\/p>\n<\/td>\n<td>\n<p align=\"left\">sentence-transformers\/paraphrase-multilingual-MiniLM-L12-v2<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"100\" width=\"100\">\n<p align=\"left\">0<\/p>\n<\/td>\n<td>\n<p align=\"left\">symanto\/sn-xlm-roberta-base-snli-mnli-anli-xnli<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"100\" width=\"100\">\n<p align=\"left\">100<\/p>\n<\/td>\n<td>\n<p align=\"left\">sentence-transformers\/all-MiniLM-L6-v2<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"100\" width=\"100\">\n<p align=\"left\">0<\/p>\n<\/td>\n<td>\n<p align=\"left\">cointegrated\/LaBSE-en-ru<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"100\" width=\"100\">\n<p align=\"left\">0<\/p>\n<\/td>\n<td>\n<p align=\"left\">sentence-transformers\/LaBSE<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c 100% \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u0435, \u0442\u0430\u043c \u0433\u0434\u0435 0 &#8212; \u044d\u0442\u043e <em>&#171;Unsupported embedding model&#187;<\/em>. <\/p>\n<blockquote>\n<p>\u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u0430 \u0442\u043e\u0447\u043d\u043e \u0434\u0435\u043b\u043e \u0432 \u0433\u0438\u0431\u0440\u0438\u0434\u043d\u043e\u043c \u043f\u043e\u0438\u0441\u043a\u0435?<\/p>\n<\/blockquote>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e <a href=\"https:\/\/qdrant.tech\/documentation\/tutorials\/search-beginners\/\" rel=\"noopener noreferrer nofollow\">\u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <\/a>\u0432 Qdrant<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th data-colwidth=\"98\" width=\"98\">\n<p>found<\/p>\n<\/th>\n<th>\n<p>model_name<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td data-colwidth=\"98\" width=\"98\">\n<p align=\"left\">100<\/p>\n<\/td>\n<td>\n<p align=\"left\">intfloat\/multilingual-e5-large<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"98\" width=\"98\">\n<p align=\"left\">100<\/p>\n<\/td>\n<td>\n<p align=\"left\">sentence-transformers\/paraphrase-multilingual-&#8230;<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"98\" width=\"98\">\n<p align=\"left\">100<\/p>\n<\/td>\n<td>\n<p align=\"left\">sentence-transformers\/paraphrase-multilingual-&#8230;<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"98\" width=\"98\">\n<p align=\"left\">100<\/p>\n<\/td>\n<td>\n<p align=\"left\">sentence-transformers\/all-MiniLM-L6-v2<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<blockquote>\n<p>\u0425\u043c&#8230;\u0438 \u0441\u043d\u043e\u0432\u0430 100%<\/p>\n<\/blockquote>\n<p>\u0412 \u044d\u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u043c\u0435\u043d\u044f \u043d\u0430\u0447\u0430\u043b\u0438 \u043e\u0434\u043e\u043b\u0435\u0432\u0430\u0442\u044c \u0441\u043e\u043c\u043d\u0435\u043d\u0438\u044f, \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043b\u0438 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b Chroma, \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u043a\u043e\u0434 \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b \u0435\u0449\u0435 \u0440\u0430\u0437 \u0442\u0435\u0441\u0442.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th data-colwidth=\"105\" width=\"105\">\n<p>found<\/p>\n<\/th>\n<th>\n<p>model_name<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td data-colwidth=\"105\" width=\"105\">\n<p align=\"left\">22<\/p>\n<\/td>\n<td>\n<p align=\"left\">intfloat\/multilingual-e5-large<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"105\" width=\"105\">\n<p align=\"left\">23<\/p>\n<\/td>\n<td>\n<p align=\"left\">sentence-transformers\/paraphrase-multilingual-mpnet-base-v2<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"105\" width=\"105\">\n<p align=\"left\">21<\/p>\n<\/td>\n<td>\n<p align=\"left\">sentence-transformers\/paraphrase-multilingual-MiniLM-L12-v2<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"105\" width=\"105\">\n<p align=\"left\">18<\/p>\n<\/td>\n<td>\n<p align=\"left\">sentence-transformers\/all-MiniLM-L6-v2<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><a href=\"https:\/\/github.com\/makeross\/vectordb-accuracy-research\" rel=\"noopener noreferrer nofollow\">\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434<\/a><\/p>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>\u0414\u043b\u044f RAG \u0441 \u043c\u043e\u0438\u043c \u043a\u0435\u0439\u0441\u043e\u043c \u0438 &#171;\u043f\u043e-\u0431\u044b\u0441\u0442\u0440\u043e\u043c\u0443&#187; &#8212; \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 Qdrant \u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u0430\u043c \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c. \u0422\u0430\u043a \u043a\u0430\u043a \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e \u043f\u043e-\u0434\u0440\u0443\u0433\u043e\u043c\u0443. <\/p>\n<p>\u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b Chroma \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0433\u0438\u0431\u043a\u0430\u044f, \u043d\u043e \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u043b\u0430\u0434\u0430\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u0438\u0437\u043e\u0439 \u0438 \u0443\u043c\u0435\u0442\u044c \u0435\u0451 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0432\u0430\u0440\u0438\u0442\u044c. <\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b\u0431\u043e\u0440 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0439 \u0411\u0414 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0443\u0440\u043e\u0432\u043d\u044f \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u0438\u0437\u044b, \u0443\u0441\u043b\u043e\u0432\u0438\u0439 \u0438 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f. \u041a\u0430\u0436\u0434\u0430\u044f \u0445\u043e\u0440\u043e\u0448\u0430 \u043f\u043e \u0441\u0432\u043e\u0435\u043c\u0443. <\/p>\n<p><a href=\"https:\/\/medium.com\/the-ai-forum\/which-vector-database-should-you-use-choosing-the-best-one-for-your-needs-5108ec7ba133\" rel=\"noopener noreferrer nofollow\">Which Vector Database Should You Use? Choosing the Best One for Your Needs | by Plaban Nayak | The AI Forum | Apr, 2024 | Medium<\/a>  <\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/817173\/\"> https:\/\/habr.com\/ru\/articles\/817173\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0412 <a href=\"https:\/\/habr.com\/ru\/articles\/807957\/\" rel=\"noopener noreferrer nofollow\">\u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438<\/a> \u0438\u0437 \u0442\u0435\u0441\u0442\u043e\u0432 \u0441\u0442\u0430\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u0441 \u0432 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u043c \u043f\u043e\u0438\u0441\u043a\u0435 \u0441 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043c\u0438 \u0447\u0442\u043e-\u0442\u043e \u043d\u0435 \u0442\u0430\u043a. \u0418 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043d\u0438\u0437\u043a\u0430\u044f \u0434\u043b\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b RAG (retrieval augmentation generation) <\/p>\n<blockquote>\n<p>\u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u0442\u043e\u043b\u043a\u043e\u0432\u044b\u043c \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u043c \u041e\u0436\u0435\u0433\u043e\u0432\u0430, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c 2 \u0442\u0438\u043f\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432:<\/p>\n<ol>\n<li>\n<p>\u041f\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u043c\u0443 \u0438\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e \u043d\u0430\u0439\u0442\u0438 \u0442\u0435\u0440\u043c\u0438\u043d<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0439\u0442\u0438 \u0442\u0435\u0440\u043c\u0438\u043d, \u0447\u0442\u043e \u043e\u043d \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442<\/p>\n<\/li>\n<\/ol>\n<\/blockquote>\n<p>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0442\u0438\u043f\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 \u0442\u0435\u0440\u043c\u0438\u043d. <a href=\"https:\/\/habr.com\/ru\/articles\/807957\/\" rel=\"noopener noreferrer nofollow\">\u0414\u0430, \u044d\u0442\u043e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0418 \u0446\u0438\u0444\u0440\u044b \u044d\u0442\u043e \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044e\u0442<\/a>. \u0422\u0435\u043f\u0435\u0440\u044c \u0446\u0435\u043b\u044c \u043d\u0430\u0439\u0442\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u0434\u043b\u044f \u0442\u0430\u043a\u0438\u0445 \u043a\u0435\u0439\u0441\u043e\u0432. \u0410 \u043d\u0435 \u043d\u0430\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u043d\u0430 \u043c\u043e\u0438 \u0433\u0440\u0430\u0431\u043b\u0438)<\/p>\n<p>\u041e\u0434\u043d\u0438\u043c \u0438\u0437 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0440\u0435\u0448\u0435\u043d\u0438\u044f &#8212; \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0433\u0438\u0431\u0440\u0438\u0434\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a, \u043d\u0435 \u0432\u0441\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0435 \u0411\u0414 \u0435\u0433\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442:<\/p>\n<ol>\n<li>\n<p><a href=\"https:\/\/github.com\/chroma-core\/chroma\/issues\/1330\" rel=\"noopener noreferrer nofollow\">Chroma &#8212; \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/docs.pinecone.io\/guides\/data\/understanding-hybrid-search\" rel=\"noopener noreferrer nofollow\">Pinecone &#8212; public preview<\/a>\u00a0&#8212; \u043d\u0435\u0442\u0443 \u0432 Docker &#8212;\u00a0<a href=\"https:\/\/community.pinecone.io\/t\/pinecone-and-docker\/4877\" rel=\"noopener noreferrer nofollow\">\u0437\u0430\u043f\u0440\u043e\u0441 \u0444\u0438\u0447\u0438<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/wiki.lfaidata.foundation\/display\/MIL\/Feature+plans\" rel=\"noopener noreferrer nofollow\">Milvus &#8212; \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/weaviate.io\/developers\/weaviate\/search\/hybrid\" rel=\"noopener noreferrer nofollow\">Weaviate &#8212; \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/qdrant.tech\/articles\/hybrid-search\/\" rel=\"noopener noreferrer nofollow\">Qdrant &#8212; \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.elastic.co\/search-labs\/tutorials\/search-tutorial\/vector-search\/hybrid-search\" rel=\"noopener noreferrer nofollow\">Elasticsearch &#8212; \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/opensearch.org\/docs\/latest\/search-plugins\/hybrid-search\/\" rel=\"noopener noreferrer nofollow\">Opensearch &#8212; \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442<\/a><\/p>\n<\/li>\n<\/ol>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a Chroma, Pinecone, Milvus \u0433\u0438\u0431\u0440\u0438\u0434\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u043f\u043e\u043a\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442, \u0442\u043e \u0432\u044b\u0431\u043e\u0440 \u043f\u0430\u043b \u043d\u0430 <a href=\"https:\/\/weaviate.io\/\" rel=\"noopener noreferrer nofollow\">Weaviate<\/a>.<\/p>\n<h2>Weaviate<\/h2>\n<p>\u0411\u044b\u0441\u0442\u0440\u043e \u043f\u0440\u043e\u0431\u0435\u0436\u0430\u0432\u0448\u0438\u0441\u044c \u043f\u043e <a href=\"https:\/\/weaviate.io\/developers\/weaviate\/search\/hybrid\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a>, \u0432\u0440\u043e\u0434\u0435 \u043a\u0430\u043a \u0432\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u043e &#8212; \u043d\u0430\u0434\u043e \u0431\u0440\u0430\u0442\u044c \u0432 \u0442\u0435\u0441\u0442. <\/p>\n<p>\u041f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 Weaviate \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e docker-compose.yaml<\/p>\n<pre><code class=\"yaml\">version: '3.4' services:   weaviate:     command:     - --host     - 0.0.0.0     - --port     - '8080'     - --scheme     - http     image: cr.weaviate.io\/semitechnologies\/weaviate:1.24.11     ports:     - 8080:8080     - 50051:50051     volumes:     - weaviate_data:\/var\/lib\/weaviate     restart: on-failure:0     environment:       QUERY_DEFAULTS_LIMIT: 25       AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true'       PERSISTENCE_DATA_PATH: '\/var\/lib\/weaviate'       #Hugginface usage       DEFAULT_VECTORIZER_MODULE: text2vec-huggingface       HUGGINGFACE_APIKEY: hf_****************************       #Dafault usage       #DEFAULT_VECTORIZER_MODULE: 'none'       ENABLE_MODULES: 'text2vec-cohere,text2vec-huggingface,text2vec-palm,text2vec-openai,generative-openai,generative-cohere,generative-palm,ref2vec-centroid,reranker-cohere,qna-openai'       CLUSTER_HOSTNAME: 'node1' volumes:   weaviate_data:<\/code><\/pre>\n<p>\u0421\u0442\u0430\u0432\u0438\u043c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438<\/p>\n<pre><code class=\"bash\">%pip install -U sentence-transformers ipywidgets weaviate-client chardet charset-normalizer<\/code><\/pre>\n<p>\u0413\u0440\u0443\u0437\u0438\u043c \u0434\u0430\u0442\u0430\u0441\u0435\u0442, \u0442\u0430\u043a\u0436\u0435 \u043a\u0430\u043a \u0438 \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0442\u043e\u0447\u044c-\u0432-\u0442\u043e\u0447\u044c.<\/p>\n<p>\u0422\u044f\u043d\u0435\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u043c\u043e\u0434\u0435\u043b\u0435\u0439, \u043a\u0430\u043a \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0442\u0435\u0441\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0442\u043e\u043c \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c<\/p>\n<pre><code class=\"python\">from weaviate.classes.config import VectorDistances models = [     \"intfloat\/multilingual-e5-large\",     \"sentence-transformers\/paraphrase-multilingual-mpnet-base-v2\",     \"symanto\/sn-xlm-roberta-base-snli-mnli-anli-xnli\",     \"cointegrated\/LaBSE-en-ru\",     \"sentence-transformers\/LaBSE\" ]  distances = [     VectorDistances.L2_SQUARED,     VectorDistances.DOT,     VectorDistances.COSINE ]<\/code><\/pre>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043a\u0430\u043a \u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0442\u0435\u0441\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0438 \u0433\u0440\u0443\u0437\u0438\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0411\u0414 \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e <a href=\"https:\/\/weaviate.io\/developers\/weaviate\/model-providers\/huggingface\/embeddings\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a>.<\/p>\n<pre><code class=\"python\">from tqdm import tqdm  from weaviate.classes.config import Configure, Property, DataType, Tokenization, VectorDistances  def create_collection(client, model_name, distance):          client.collections.create(         \"title\",         vectorizer_config=[             Configure.NamedVectors.text2vec_huggingface(                 name=\"title_vector\",                 source_properties=[\"title\"],                 model=model_name,                 vector_index_config=Configure.VectorIndex.hnsw(distance_metric=distance)             )         ]     )      collection = client.collections.get(\"title\")          with collection.batch.dynamic() as batch:         for i, data in tqdm(dataset.iterrows()):             obj = {                 \"title\": data[\"title\"]             }             batch.add_object(                 properties = obj             )      if len(collection.batch.failed_objects) > 0:          print(collection.batch.failed_objects)  def delete_collection(client):     client.collections.delete(\"title\") <\/code><\/pre>\n<p>\u0413\u0440\u0443\u0437\u0438\u043c \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u0434\u0430<\/p>\n<pre><code class=\"python\">delete_collection(client) create_collection(client, \"cointegrated\/LaBSE-en-ru\", VectorDistances.COSINE)<\/code><\/pre>\n<p>\u0412\u043e\u0442 \u0442\u0443\u0442 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u041d\u041e \ud83d\ude41<\/p>\n<pre><code>1000it [00:04, 204.12it\/s] [ErrorObject(message='vectorize target vector title_vector: update vector: failed with status: 429 error: Rate limit reached.  You reached free usage limit (reset hourly). Please subscribe to a plan at https:\/\/huggingface.co\/pricing to use the API at this rate'...<\/code><\/pre>\n<p>\u041e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e Weviate \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 Huggingface \u043d\u0435 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e, \u043a\u0430\u043a \u0434\u0435\u043b\u0430\u044e\u0442 \u0434\u0440\u0443\u0433\u0438\u0435 \u0411\u0414 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438. \u0410 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b hugginface \u0447\u0435\u0440\u0435\u0437 API.<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0421\u0445\u0435\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b Weaviate \u0438 huggingface<\/figcaption><\/div>\n<\/figure>\n<p>\u041c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u043c\u043e\u0434\u0435\u043b\u0438, \u043d\u043e \u0438\u0445 \u043d\u0443\u0436\u043d\u043e<a href=\"https:\/\/weaviate.io\/developers\/weaviate\/modules\/retriever-vectorizer-modules\/text2vec-transformers#build-a-model\" rel=\"noopener noreferrer nofollow\"> \u0437\u0430\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0432 Docker \u043e\u0431\u0440\u0430\u0437<\/a> \u0438 \u043f\u043e\u0442\u043e\u043c \u043a\u043e\u043d\u043d\u0435\u043a\u0442\u0438\u0442\u044c \u043a Weaviate.<\/p>\n<p>\u0420\u0435\u0448\u0438\u043b \u043d\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c \u0442\u0435\u0441\u0442, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d \u0432\u044b\u0431\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0437\u0430 \u0440\u0430\u043c\u043a\u0438 &#171;\u043f\u043e-\u0431\u044b\u0441\u0442\u0440\u043e\u043c\u0443&#187; + \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u043c\u043e\u0434\u0435\u043b\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a Qdrant.<\/p>\n<h2>Qdrant<\/h2>\n<p>\u041f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u043c Docker-\u043e\u0431\u0440\u0430\u0437 \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e <a href=\"https:\/\/qdrant.tech\/documentation\/guides\/installation\/\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 <\/a><\/p>\n<pre><code>docker run -p 6333:6333 -v $PWD\/qdrant_storage:\/qdrant\/storage qdrant\/qdrant<\/code><\/pre>\n<p>\u0421\u0442\u0430\u0432\u0438\u043c \u043d\u0443\u0436\u043d\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b<\/p>\n<pre><code class=\"bash\">%pip install -U qdrant-client<\/code><\/pre>\n<p>\u0413\u0440\u0443\u0437\u0438\u043c \u0434\u0430\u0442\u0430\u0441\u0435\u0442, \u0442\u0430\u043a\u0436\u0435 \u043a\u0430\u043a \u0438 \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0442\u043e\u0447\u044c-\u0432-\u0442\u043e\u0447\u044c.<\/p>\n<p>\u0422\u044f\u043d\u0435\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u043c\u043e\u0434\u0435\u043b\u0435\u0439, \u043a\u0430\u043a \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0442\u0435\u0441\u0442\u0435 + <em>sentence-transformers\/all-MiniLM-L6-v2<\/em> \u0438  sentence-transformers\/paraphrase-multilingual-MiniLM-L12-v. \u0414\u043e\u0431\u0430\u0432\u0438\u043b \u043c\u043e\u0434\u0435\u043b\u0435\u0439, \u0442\u0430\u043a \u043a\u0430\u043a  FastEmbed \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d <a href=\"https:\/\/qdrant.github.io\/fastembed\/examples\/Supported_Models\/\" rel=\"noopener noreferrer nofollow\">\u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 qdrant. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u0443\u0434\u0435\u043c \u043b\u043e\u0432\u0438\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443 <em>&#171;Unsupported embedding model&#8230;&#187;<\/em><\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0438 \u0433\u0440\u0443\u0437\u0438\u043c \u0434\u0430\u043d\u043d\u044b\u0435, \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e <a href=\"https:\/\/qdrant.tech\/documentation\/tutorials\/hybrid-search-fastembed\/\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a><\/p>\n<pre><code class=\"python\">from qdrant_client import QdrantClient, models as qdrant_models  client = QdrantClient(url=\"http:\/\/localhost:6333\") COLLECTION_NAME=\"termins\"  def create_collection(client, model_name):     client.set_model(model_name)     client.create_collection(         collection_name=COLLECTION_NAME,         vectors_config=client.get_fastembed_vector_params()     )     add_data()  def add_data():     ids = list(map(int, dataset.index.values.tolist()))      client.add(         collection_name=COLLECTION_NAME,         ids = ids, documents=dataset[\"title\"].tolist(), batch_size=2, parallel=0     )   def delete_collection():     client.delete_collection(collection_name=COLLECTION_NAME)<\/code><\/pre>\n<p>\u0412 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u043e\u0442\u0432\u0435\u0442\u0430 \u0432 \u0411\u0414 \u043e\u0441\u043e\u0431\u043e \u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445. \u041d\u043e \u043c\u044b \u0437\u0430\u0431\u0438\u0440\u0430\u0435\u043c \u0441 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u043e\u0446\u0435\u043d\u043a\u043e\u0439, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 qdrant \u043e\u0446\u0435\u043d\u043a\u0430, \u0430 \u043d\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043a\u0430\u043a \u0432 Chroma.<\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0442\u0435\u0441\u0442 \u0438\u0438\u0438\u0438&#8230;<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th data-colwidth=\"100\" width=\"100\">\n<p>found<\/p>\n<\/th>\n<th>\n<p>model_name<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td data-colwidth=\"100\" width=\"100\">\n<p align=\"left\">100<\/p>\n<\/td>\n<td>\n<p align=\"left\">intfloat\/multilingual-e5-large<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"100\" width=\"100\">\n<p align=\"left\">100<\/p>\n<\/td>\n<td>\n<p align=\"left\">sentence-transformers\/paraphrase-multilingual-mpnet-base-v2<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"100\" width=\"100\">\n<p align=\"left\">100<\/p>\n<\/td>\n<td>\n<p align=\"left\">sentence-transformers\/paraphrase-multilingual-MiniLM-L12-v2<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"100\" width=\"100\">\n<p align=\"left\">0<\/p>\n<\/td>\n<td>\n<p align=\"left\">symanto\/sn-xlm-roberta-base-snli-mnli-anli-xnli<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"100\" width=\"100\">\n<p align=\"left\">100<\/p>\n<\/td>\n<td>\n<p align=\"left\">sentence-transformers\/all-MiniLM-L6-v2<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"100\" width=\"100\">\n<p align=\"left\">0<\/p>\n<\/td>\n<td>\n<p align=\"left\">cointegrated\/LaBSE-en-ru<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"100\" width=\"100\">\n<p align=\"left\">0<\/p>\n<\/td>\n<td>\n<p align=\"left\">sentence-transformers\/LaBSE<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c 100% \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u0435, \u0442\u0430\u043c \u0433\u0434\u0435 0 &#8212; \u044d\u0442\u043e <em>&#171;Unsupported embedding model&#187;<\/em>. <\/p>\n<blockquote>\n<p>\u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u0430 \u0442\u043e\u0447\u043d\u043e \u0434\u0435\u043b\u043e \u0432 \u0433\u0438\u0431\u0440\u0438\u0434\u043d\u043e\u043c \u043f\u043e\u0438\u0441\u043a\u0435?<\/p>\n<\/blockquote>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e <a href=\"https:\/\/qdrant.tech\/documentation\/tutorials\/search-beginners\/\" rel=\"noopener noreferrer nofollow\">\u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <\/a>\u0432 Qdrant<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th data-colwidth=\"98\" width=\"98\">\n<p>found<\/p>\n<\/th>\n<th>\n<p>model_name<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td data-colwidth=\"98\" width=\"98\">\n<p align=\"left\">100<\/p>\n<\/td>\n<td>\n<p align=\"left\">intfloat\/multilingual-e5-large<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"98\" width=\"98\">\n<p align=\"left\">100<\/p>\n<\/td>\n<td>\n<p align=\"left\">sentence-transformers\/paraphrase-multilingual-&#8230;<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"98\" width=\"98\">\n<p align=\"left\">100<\/p>\n<\/td>\n<td>\n<p align=\"left\">sentence-transformers\/paraphrase-multilingual-&#8230;<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"98\" width=\"98\">\n<p align=\"left\">100<\/p>\n<\/td>\n<td>\n<p align=\"left\">sentence-transformers\/all-MiniLM-L6-v2<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<blockquote>\n<p>\u0425\u043c&#8230;\u0438 \u0441\u043d\u043e\u0432\u0430 100%<\/p>\n<\/blockquote>\n<p>\u0412 \u044d\u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u043c\u0435\u043d\u044f \u043d\u0430\u0447\u0430\u043b\u0438 \u043e\u0434\u043e\u043b\u0435\u0432\u0430\u0442\u044c \u0441\u043e\u043c\u043d\u0435\u043d\u0438\u044f, \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043b\u0438 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b Chroma, \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u043a\u043e\u0434 \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b \u0435\u0449\u0435 \u0440\u0430\u0437 \u0442\u0435\u0441\u0442.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th data-colwidth=\"105\" width=\"105\">\n<p>found<\/p>\n<\/th>\n<th>\n<p>model_name<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td data-colwidth=\"105\" width=\"105\">\n<p align=\"left\">22<\/p>\n<\/td>\n<td>\n<p align=\"left\">intfloat\/multilingual-e5-large<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"105\" width=\"105\">\n<p align=\"left\">23<\/p>\n<\/td>\n<td>\n<p align=\"left\">sentence-transformers\/paraphrase-multilingual-mpnet-base-v2<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"105\" width=\"105\">\n<p align=\"left\">21<\/p>\n<\/td>\n<td>\n<p align=\"left\">sentence-transformers\/paraphrase-multilingual-MiniLM-L12-v2<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"105\" width=\"105\">\n<p align=\"left\">18<\/p>\n<\/td>\n<td>\n<p align=\"left\">sentence-transformers\/all-MiniLM-L6-v2<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><a href=\"https:\/\/github.com\/makeross\/vectordb-accuracy-research\" rel=\"noopener noreferrer nofollow\">\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434<\/a><\/p>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>\u0414\u043b\u044f RAG \u0441 \u043c\u043e\u0438\u043c \u043a\u0435\u0439\u0441\u043e\u043c \u0438 &#171;\u043f\u043e-\u0431\u044b\u0441\u0442\u0440\u043e\u043c\u0443&#187; &#8212; \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 Qdrant \u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u0430\u043c \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c. \u0422\u0430\u043a \u043a\u0430\u043a \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e \u043f\u043e-\u0434\u0440\u0443\u0433\u043e\u043c\u0443. <\/p>\n<p>\u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b Chroma \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0433\u0438\u0431\u043a\u0430\u044f, \u043d\u043e \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u043b\u0430\u0434\u0430\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u0438\u0437\u043e\u0439 \u0438 \u0443\u043c\u0435\u0442\u044c \u0435\u0451 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0432\u0430\u0440\u0438\u0442\u044c. <\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b\u0431\u043e\u0440 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0439 \u0411\u0414 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0443\u0440\u043e\u0432\u043d\u044f \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u0438\u0437\u044b, \u0443\u0441\u043b\u043e\u0432\u0438\u0439 \u0438 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f. \u041a\u0430\u0436\u0434\u0430\u044f \u0445\u043e\u0440\u043e\u0448\u0430 \u043f\u043e \u0441\u0432\u043e\u0435\u043c\u0443. <\/p>\n<p><a href=\"https:\/\/medium.com\/the-ai-forum\/which-vector-database-should-you-use-choosing-the-best-one-for-your-needs-5108ec7ba133\" rel=\"noopener noreferrer nofollow\">Which Vector Database Should You Use? Choosing the Best One for Your Needs | by Plaban Nayak | The AI Forum | Apr, 2024 | Medium<\/a>  <\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/817173\/\"> https:\/\/habr.com\/ru\/articles\/817173\/<\/a><br \/><\/br><\/br><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-377164","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/377164","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=377164"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/377164\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=377164"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=377164"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=377164"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}