{"id":500596,"date":"2026-10-28T09:00:40","date_gmt":"2026-10-28T06:00:40","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=500596"},"modified":"2026-10-28T09:00:40","modified_gmt":"2026-10-28T06:00:40","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=500596","title":{"rendered":"\u041d\u0430 \u043a\u0430\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435 \u0418\u0418-\u0430\u0433\u0435\u043d\u0442\u0443 \u0438\u0441\u043a\u0430\u0442\u044c \u043f\u043e \u0441\u0432\u043e\u0435\u0439 \u043f\u0430\u043c\u044f\u0442\u0438: SQL \u0438\u043b\u0438 SPARQL?"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0430\u043c\u044f\u0442\u044c \u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u0432 \u0442\u0440\u0435\u043d\u0434\u0435 \u0441 \u0442\u043e\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043a\u0430\u043a \u043e\u043d\u0438 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c, \u0447\u0442\u043e\u0431\u044b \u0431\u043e\u0440\u043e\u0442\u044c\u0441\u044f \u0441 \u0433\u0430\u043b\u043b\u044e\u0446\u0438\u043d\u0430\u0446\u0438\u044f\u043c\u0438 \u0438 \u0434\u0430\u0432\u0430\u0442\u044c \u043e\u0442\u0432\u0435\u0442\u044b \u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f LLM \u043d\u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438. \u041a\u0430\u043a \u043b\u0443\u0447\u0448\u0435 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0438\u0437 \u0442\u0430\u0431\u043b\u0438\u0446 \u0438\u043b\u0438 \u0438\u0437 \u0433\u0440\u0430\u0444\u0430 \u0447\u0430\u0441\u0442\u043e \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0432\u0435\u0440\u0435, \u043d\u0430\u0447\u0438\u0442\u0430\u0432\u0448\u0438\u0441\u044c \u043f\u043e\u0441\u0442\u043e\u0432 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u0431\u0435\u0437 \u0441\u0432\u043e\u0438\u0445 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439.  \u0412 <a href=\"https:\/\/arxiv.org\/abs\/2311.07509\" rel=\"noopener nofollow\">\u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0438 Sequeda \u0438 \u0441\u043e\u0430\u0432\u0442\u043e\u0440\u043e\u0432<\/a> GPT-4 \u043e\u0442\u0432\u0435\u0447\u0430\u043b \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043f\u043e \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 SQL-\u0431\u0430\u0437\u0435 \u0432\u0435\u0440\u043d\u043e \u0432 16% \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u0430 \u043f\u043e \u0433\u0440\u0430\u0444\u0443 \u0437\u043d\u0430\u043d\u0438\u0439 \u043f\u043e\u0432\u0435\u0440\u0445 \u044d\u0442\u043e\u0439 \u0436\u0435 \u0431\u0430\u0437\u044b \u0432 54%, \u0433\u0434\u0435 \u0443 \u0433\u0440\u0430\u0444\u0430 \u0431\u044b\u043b\u0430 \u043e\u043d\u0442\u043e\u043b\u043e\u0433\u0438\u044f \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c, \u0430 \u0443 SQL-\u0441\u0445\u0435\u043c\u044b \u0442\u043e\u043b\u044c\u043a\u043e DDL \u0442\u0438\u043f\u044b \u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0442\u0430\u0431\u043b\u0438\u0446\/\u043a\u043e\u043b\u043e\u043d\u043e\u043a.<\/p>\n<p>\u0412 \u043c\u043e\u0435\u043c GraphRAG \u043e\u0434\u043d\u0430 \u0438 \u0442\u0430 \u0436\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0432 \u0434\u0432\u0443\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u0444\u043e\u0440\u043c\u0430\u0445. \u0414\u0430\u043d\u043d\u044b\u0435 \u0438\u0437  \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1097022\/\" rel=\"noopener nofollow\">\u201c\u041c\u043e\u0439 PostgreSQL \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0442\u0432\u043e\u0435\u0433\u043e \u0438 \u043f\u043e\u0447\u0442\u0438 \u0434\u043e\u0433\u043d\u0430\u043b ClickHouse\u201d<\/a> \u0438\u0437\u0432\u043b\u0435\u043a \u0432 34 \u0442\u0430\u0431\u043b\u0438\u0446\u044b PostgreSQL, \u0430 \u0432 \u0433\u0440\u0430\u0444 \u044d\u0442\u043e \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f R2RML. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043b \u043e\u0431\u0435 \u0444\u043e\u0440\u043c\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u043d\u0438\u0439 \u043a \u0430\u0433\u0435\u043d\u0442\u0443 \u043f\u043e MCP \u0438 \u0437\u0430\u0434\u0430\u043b \u0435\u043c\u0443 15 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u043e \u0441\u0442\u0430\u0442\u044c\u0435: \u0447\u0435\u0440\u0435\u0437 SQL, \u0447\u0435\u0440\u0435\u0437 SPARQL \u0438 \u0434\u0430\u043b \u0435\u0449\u0435 \u0432\u044b\u0431\u043e\u0440 \u0430\u0433\u0435\u043d\u0442\u0443 \u0438\u0437 \u0434\u0432\u0443\u0445 \u044d\u0442\u0438\u0445 \u0432\u0438\u0434\u043e\u0432 \u0441\u0440\u0430\u0437\u0443. \u0412 \u043c\u043e\u0435\u043c \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0435 \u0430\u0433\u0435\u043d\u0442 \u043f\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0441\u044f \u043d\u0430 \u0442\u0440\u0435\u0445 LLM \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c\u0438 \u0432\u0435\u0441\u0430\u043c\u0438. \u0418\u0445 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043d\u0430 \u0441\u0432\u043e\u0435\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u0438\u043b\u0438 \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0435 \u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043d\u0435 \u0443\u0439\u0434\u0443\u0442 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0443 \u0432 \u043b\u043e\u0433\u0438 \u0438\u043b\u0438 \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440\u0443 \u043c\u0435\u0436\u0434\u0443 \u0432\u0430\u043c\u0438 \u0438 LLM.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u044f \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u0438 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043b \u0447\u0442\u043e \u043b\u0443\u0447\u0448\u0435 \u0434\u043b\u044f \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430: Lance \u0438\u043b\u0438 pgvector. \u041f\u043e\u0434\u0435\u043b\u044e\u0441\u044c \u0441\u0432\u043e\u0438\u043c\u0438 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f\u043c\u0438 \u043d\u0430 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u044f\u0445 \u043a\u0430\u043a \u043b\u0443\u0447\u0448\u0435 \u0438\u0441\u043a\u0430\u0442\u044c \u0438 \u0432 \u0447\u0435\u043c \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0437\u043d\u0430\u043d\u0438\u044f.<\/p>\n<p>\u041e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u0432 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0435 \u043a\u0430\u043a DeepSeek \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b SQL-\u0438\u043d\u044a\u0435\u043a\u0446\u0438\u044e \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430 \u043c\u043e\u0439 \u0432\u043e\u043f\u0440\u043e\u0441.<\/p>\n<h2>\u0414\u0432\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0434\u043d\u0438\u0445 \u0438 \u0442\u0435\u0445 \u0436\u0435 \u0434\u0430\u043d\u043d\u044b\u0445<\/h2>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e LLM, NLP \u0438 \u043c\u043e\u0440\u0444\u043e\u043b\u043e\u0433\u0438\u0438 \u0438 \u043f\u0440\u043e\u0447\u0438\u0445 \u0441\u0442\u0440\u0430\u0448\u043d\u044b\u0445 \u0441\u043b\u043e\u0432 \u043c\u043e\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b\u0438\u0441\u044c \u0432 \u0433\u0440\u0430\u0444\u043e\u0432\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438 \u0444\u0440\u0435\u0439\u043c\u044b \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u043a RDF Quad. \u0421\u043b\u043e\u0432\u0430 \u0438\u0437 \u0442\u0435\u043a\u0441\u0442\u0430 \u0440\u0430\u0437\u043b\u043e\u0436\u0438\u043b\u0438\u0441\u044c \u043f\u043e \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044f\u043c, \u0442\u0435\u0437\u0438\u0441\u0430\u043c, \u0437\u0430\u043c\u0435\u0440\u0430\u043c, \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u043c \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c \u0438 \u0442. \u043f. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0430\u043a\u043e\u0433\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430 \u0435\u0441\u0442\u044c \u0435\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u0445 \u043f\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0443 W3C Web Annotation. \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u044b\u0439 \u0441\u043b\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u044b\u043b \u0432\u044b\u0432\u0435\u0434\u0435\u043d \u0443\u0436\u0435 \u043f\u043e\u0432\u0435\u0440\u0445 \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u043e\u0439. \u0412\u0441\u0435\u0433\u043e \u0432\u044b\u0448\u043b\u043e 10154 \u043a\u0432\u0430\u0434\u0430 \u0432 37 \u0433\u0440\u0430\u0444\u0430\u0445 \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438.<\/p>\n<p>\u0417\u0430\u0442\u0435\u043c \u044d\u0442\u043e \u0432\u0441\u0435 \u0440\u0430\u0437\u043b\u043e\u0436\u0438\u043b \u043f\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u0441\u0442\u0430\u043b\u043e \u043f\u0440\u043e\u0449\u0435 \u0434\u043b\u044f \u0432\u043e\u0441\u043f\u0440\u0438\u044f\u0442\u0438\u044f \u043d\u0430 \u0433\u043b\u0430\u0437. \u0423\u0437\u0435\u043b \u0433\u0440\u0430\u0444\u0430 \u0441\u0442\u0430\u043b \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u043a\u043e\u043b\u043e\u043d\u043a\u0430 &#8212; \u0435\u0433\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e\u043c, \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0442\u0430\u043b \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u043c \u0432 \u0441\u0442\u0440\u043e\u043a\u0435. \u0412 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u043a \u043a\u0430\u0436\u0434\u043e\u0439 \u043a\u043e\u043b\u043e\u043d\u043a\u0435 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043a\u0430\u043a\u043e\u0439 \u043f\u0440\u0435\u0434\u0438\u043a\u0430\u0442 RDF \u043e\u043d\u0430 \u0445\u0440\u0430\u043d\u0438\u0442. \u041c\u044d\u043f\u043f\u0438\u043d\u0433 R2RML \u043f\u043e \u044d\u0442\u0438\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c \u0441\u043d\u043e\u0432\u0430 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0433\u0440\u0430\u0444.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/c2\/84\/a0\/c284a00f8c441ab154fd5ea45d0cdefa.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/c2\/84\/a0\/c284a00f8c441ab154fd5ea45d0cdefa.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/c2\/84\/a0\/c284a00f8c441ab154fd5ea45d0cdefa.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0412 \u043f\u0430\u043c\u044f\u0442\u0438 \u0435\u0441\u0442\u044c \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u0438\u0437 \u0441\u0442\u0430\u0442\u044c\u0438. LLM \u0437\u0430\u043f\u0438\u0441\u0430\u043b\u0430 \u0438\u0445 \u043a\u0430\u043a BPMN \u0441\u043e\u0431\u044b\u0442\u0438\u044f, \u0437\u0430\u0434\u0430\u0447\u0438, \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0435 \u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u0435. \u0425\u0440\u0430\u043d\u0438\u0442\u0441\u044f 4 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430, 29 \u0448\u0430\u0433\u043e\u0432 \u0432 process_steps\/process_flows.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/61\/a4\/66\/61a4660d3e4f93edbe1089e62274cbf7.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/61\/a4\/66\/61a4660d3e4f93edbe1089e62274cbf7.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/61\/a4\/66\/61a4660d3e4f93edbe1089e62274cbf7.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/c5\/7f\/72\/c57f7299bcf974a8ad314d56ef7cdfcb.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/c5\/7f\/72\/c57f7299bcf974a8ad314d56ef7cdfcb.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/c5\/7f\/72\/c57f7299bcf974a8ad314d56ef7cdfcb.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/d1\/2a\/de\/d12adec08567c4743cd9ac03a589aa60.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/d1\/2a\/de\/d12adec08567c4743cd9ac03a589aa60.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/d1\/2a\/de\/d12adec08567c4743cd9ac03a589aa60.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/23\/6c\/20\/236c209068c233ae307f92e0a1778632.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/23\/6c\/20\/236c209068c233ae307f92e0a1778632.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/23\/6c\/20\/236c209068c233ae307f92e0a1778632.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0414\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u043b\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u044f\u0437\u044b\u043a\u0430\u0445, \u0441\u0434\u0435\u043b\u0430\u043b \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439 \u0438 \u043f\u0440\u043e\u0433\u043d\u0430\u043b \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u0438 \u043d\u0430 \u044d\u0442\u043e\u043c \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0435.<\/p>\n<h2>\u041f\u0430\u043c\u044f\u0442\u044c \u0430\u0433\u0435\u043d\u0442\u0430<\/h2>\n<p>\u042d\u0442\u043e Java \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043d\u0430 langchain4j \u0441 \u0446\u0438\u043a\u043b\u043e\u043c <a href=\"https:\/\/github.com\/igor-suhorukov\/jgraph_rag\/\" rel=\"noopener nofollow\">\u201c\u043c\u043e\u0434\u0435\u043b\u044c-&gt;\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b-&gt;\u043c\u043e\u0434\u0435\u043b\u044c\u201d<\/a> \u0433\u0434\u0435 \u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 16 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 LLM \u0438 \u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 12 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043a \u043f\u0430\u043c\u044f\u0442\u0438. \u041f\u0430\u043c\u044f\u0442\u044c \u044d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 MCP-\u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0430 stdio \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0432 PostgreSQL. \u041f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0432 \u044d\u0442\u043e\u043c \u0446\u0438\u043a\u043b\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0442\u0440\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430:<\/p>\n<ul>\n<li>\n<p>sql_query \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 SQL-\u0437\u0430\u043f\u0440\u043e\u0441 \u0432 \u0421\u0423\u0411\u0414 \u0441 \u0440\u043e\u043b\u044c\u044e agent_sql<\/p>\n<\/li>\n<li>\n<p>sparql_query \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 SPARQL-\u0437\u0430\u043f\u0440\u043e\u0441 \u0432 \u0431\u0430\u0437\u0435 \u0441 \u0440\u043e\u043b\u044c\u044e agent_sparql. \u041f\u0440\u0435\u0444\u0438\u043a\u0441\u044b schema: kgo: oa: \u0443\u0436\u0435 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043a\u0430\u043a \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 SPARQL-\u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u0430\u0445.<\/p>\n<\/li>\n<li>\n<p>submit_answer \u043a\u043e\u0433\u0434\u0430 \u0430\u0433\u0435\u043d\u0442 \u0440\u0435\u0448\u0438\u043b \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c, \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0446\u0438\u0442\u0430\u0442\u0443 \u0441 \u043d\u043e\u043c\u0435\u0440\u0430\u043c\u0438 \u0441\u0442\u0440\u043e\u043a, \u0442\u0435\u043a\u0441\u0442 \u043e\u0442\u0432\u0435\u0442\u0430 \u0438\u043b\u0438 \u201c\u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u0442\u201d.<\/p>\n<\/li>\n<\/ul>\n<p>\u041e\u0431\u0435 \u0440\u043e\u043b\u0438 \u0432 PostgreSQL \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0438\u0442\u0430\u044e\u0442 \u0434\u0430\u043d\u043d\u044b\u0435, \u0441 \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u043e\u043c \u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441 5 \u0441\u0435\u043a\u0443\u043d\u0434, \u043e\u0442\u0432\u0435\u0442 \u043e\u0431\u0440\u0435\u0437\u0430\u0435\u0442\u0441\u044f \u0434\u043e 200 \u0441\u0442\u0440\u043e\u043a \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043c\u043e\u0434\u0435\u043b\u0438. \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c \u043f\u0440\u043e\u043c\u043f\u0442\u0435 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0435 \u0432\u043e \u0432\u0441\u0435\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445: \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0438 \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u0441 \u043f\u0440\u0435\u0434\u0438\u043a\u0430\u0442\u0430\u043c\u0438 RDF. \u042d\u0442\u043e 45-53 \u0442\u044b\u0441\u044f\u0447\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0438\u043b\u0438 15-17 \u0442\u044b\u0441. \u0442\u043e\u043a\u0435\u043d\u043e\u0432. \u0423\u0441\u043b\u043e\u0432\u0438\u044f \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0439 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u043e\u0439 \u043a \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0438\u0437 \u043d\u0438\u0445.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/81\/9a\/c7\/819ac78acb88462bf206f08494ee888f.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/81\/9a\/c7\/819ac78acb88462bf206f08494ee888f.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/81\/9a\/c7\/819ac78acb88462bf206f08494ee888f.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0412\u044b\u0437\u043e\u0432 \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 OpenAI \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b, \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b OpenRouter \u0438 \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u043e\u043f\u0430\u0441\u0442\u044c \u043d\u0430 \u0441\u0438\u043b\u044c\u043d\u043e \u043a\u0432\u0430\u043d\u0442\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0438\u043b\u0438 \u0434\u043e\u0440\u043e\u0433\u0438\u0435 \u043f\u0440\u043e\u0433\u043e\u043d\u044b \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u043a, \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u043b \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432 \u0438 \u0441\u0440\u0435\u0434\u043d\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0440\u0430\u0441\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0439.<\/p>\n<pre><code class=\"java\">ChatModel model = OpenAiChatModel.builder()        .baseUrl(\"https:\/\/openrouter.ai\/api\/v1\")        .apiKey(System.getenv(\"OPENROUTER_API_KEY\"))        .modelName(customModelName)        .customParameters(Map.of(                \"provider\", Map.of(\"order\", List.of(\"deepinfra\/fp8\", \"nebius\/fp8\"),                        \"allow_fallbacks\", false, \"require_parameters\", true),                \"reasoning\", Map.of(\"effort\", \"medium\")))        .returnThinking(true)        .sendThinking(true, \"reasoning\")        .build();<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper\"><\/span><\/a><\/div><\/pre>\n<p>\u041c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u0438 \u043d\u0430 \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 vLLM\/ollama\/llama.cpp.<\/p>\n<p>\u041a \u043f\u0430\u043c\u044f\u0442\u0438 \u0430\u0433\u0435\u043d\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u043e MCP, \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043d\u0443\u0436\u043d\u044b\u0435 \u0432 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b:<\/p>\n<pre><code class=\"java\">McpSyncServer server = McpServer.sync(new StdioServerTransportProvider(mapper))        .serverInfo(\"jgraph-rag-memory\", \"0.1.0\")        .capabilities(McpSchema.ServerCapabilities.builder().tools(false).build())        .toolCall(McpSchema.Tool.builder(\"sql_query\", mapper, input).description(lang.sqlDescription()).build(),                (exchange, request) -&gt; memory.call(request, true))        .toolCall(McpSchema.Tool.builder(\"sparql_query\", mapper, input).description(lang.sparqlDescription()).build(),                (exchange, request) -&gt; memory.call(request, false))        .build();Properties p = new Properties();p.setProperty(\"user\", isSql ? \"agent_sql\" : \"agent_sparql\");Connection c = DriverManager.getConnection(jdbcUrl, p);c.setReadOnly(true);try (PreparedStatement ps = c.prepareStatement(\"SELECT kb.sparql_json(?, ?)::text\")) {    ps.setString(1, withPrefixes(query));    ps.setString(2, \"https:\/\/example.org\/story-kg\/id\/habr-1097022\/\");    try (ResultSet rs = ps.executeQuery()) {        rs.next();        JsonNode result = json.readTree(rs.getString(1));    }}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0446\u0438\u043a\u043b \u0430\u0433\u0435\u043d\u0442\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0432\u0441\u044e \u0441\u0432\u043e\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u0415\u0441\u043b\u0438 \u0430\u0433\u0435\u043d\u0442 \u0432\u044b\u0437\u0432\u0430\u043b submit_answer, \u0442\u043e \u0441\u0432\u043e\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u043e\u043d \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043b \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0441\u0434\u0430\u043b. \u041f\u0440\u0438 \u043e\u0448\u0438\u0431\u043a\u0435 \u0432 MCP \u0430\u0433\u0435\u043d\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0442\u0435\u043a\u0441\u0442 \u044d\u0442\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0438, \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u0438\u0434\u0438\u0442 \u0435\u0435 \u0438 \u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e:<\/p>\n<pre><code class=\"java\">List&lt;ChatMessage&gt; messages = new ArrayList&lt;&gt;(List.of(SystemMessage.from(system), UserMessage.from(question)));for (int turn = 0; turn &lt; 16; turn++) {    ChatResponse response = model.chat(ChatRequest.builder()            .messages(messages).toolSpecifications(tools).build());    AiMessage ai = response.aiMessage();    messages.add(ai);    for (ToolExecutionRequest call : ai.toolExecutionRequests()) {        if (call.name().equals(\"submit_answer\")) {            return fromArguments(call.arguments());        }    }    for (ToolExecutionRequest call : ai.toolExecutionRequests()) {        String text;        try {            text = memory.executeTool(call).resultText();        } catch (McpApplicationErrorException e) {            text = e.getMessage();        }        messages.add(ToolExecutionResultMessage.from(call, text));    }}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>OpenRouter \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u043e\u0442\u0432\u0435\u0442\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0435\u0433\u043e \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c, \u043a\u0430\u043a\u043e\u0439 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b \u0437\u0430\u043f\u0440\u043e\u0441, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0446\u0435\u043d\u044b \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0442\u043e\u0447\u043d\u044b\u0435, \u0430 \u043d\u0435 \u043e\u0446\u0435\u043d\u043a\u0430 \u043f\u043e \u0447\u0438\u0441\u043b\u0443 \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0438 \u043f\u0440\u0430\u0439\u0441\u0443.<\/p>\n<p>\u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u043e\u0434\u043d\u043e\u0433\u043e \u0438 \u0442\u043e\u0433\u043e \u0436\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0430  \u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u201c\u041d\u0430 \u043a\u0430\u043a\u0443\u044e \u0440\u0435\u043f\u043b\u0438\u043a\u0443 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440\u0430 \u0430\u0432\u0442\u043e\u0440 \u043e\u0442\u0432\u0435\u0442\u0438\u043b \u0441 \u0438\u0440\u043e\u043d\u0438\u0435\u0439?\u201d \u043d\u0430 SQL \u0438 SPARQL:<\/p>\n<pre><code class=\"sql\">SELECT t.id, t.textFROM quotations q JOIN quotations t ON t.id = q.stance_targetWHERE q.stance = 'irony';<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<pre><code>SELECT DISTINCT ?t ?text WHERE {  ?q kgo:stance &lt;https:\/\/example.org\/story-kg\/concept\/stance\/irony&gt; ;     kgo:stanceTarget ?t .  ?t schema:text ?text .}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0418 \u0432 \u043e\u0442\u0432\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442 \u0440\u0435\u043f\u043b\u0438\u043a\u0443 \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u201c\u0422\u0430\u043a \u0432\u043e\u0437\u044c\u043c\u0438 \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435. \u0418\u0445 \u0434\u043b\u044f PostgreSQL \u0441 \u0434\u0435\u0441\u044f\u0442\u043e\u043a.\u201d<\/p>\n<h3>\u042d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442<\/h3>\n<p>\u0414\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b 15 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u0441\u0435\u043c\u0438 \u0442\u0438\u043f\u043e\u0432. \u041a \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0435\u0441\u0442\u044c \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u0438 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 SQL \u0438 SPARQL. \u0422\u0435\u0441\u0442\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442, \u0447\u0442\u043e \u043e\u0431\u0430 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0434\u0430\u044e\u0442 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0431\u0430\u0437\u0430\u0445 \u043e\u0431\u043e\u0438\u0445 \u044f\u0437\u044b\u043a\u043e\u0432.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\n<\/th>\n<th>\n<p align=\"left\">\u0422\u0438\u043f<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0412\u043e\u043f\u0440\u043e\u0441<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">F1<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0424\u0430\u043a\u0442<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u0431\u043c\u043e\u0434\u0443\u043b\u0435\u0439 ClickHouse \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0431\u0440\u0430\u0442\u044c MergeTree?<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">F2<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0424\u0430\u043a\u0442<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0412 \u043a\u0430\u043a\u043e\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043b\u0435\u0436\u0438\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 iheap?<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">R1<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u0432\u044f\u0437\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041a\u0430\u043a\u0438\u0435 \u0421\u0423\u0411\u0414 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0432 \u043f\u0440\u043e\u0434\u0435 \u0443 \u0437\u043d\u0430\u043a\u043e\u043c\u043e\u0433\u043e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440\u0430 \u0430\u0432\u0442\u043e\u0440\u0430?<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">R2<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u0432\u044f\u0437\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421 \u043a\u0430\u043a\u0438\u043c\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c pg_vexec?<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">A1<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0410\u0433\u0440\u0435\u0433\u0430\u0442<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u043f\u043b\u0438\u043a \u0432 \u0441\u043f\u043e\u0440\u0435 \u0430\u0432\u0442\u043e\u0440\u0430 \u0441\u043e \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u043c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u043e\u0438\u0437\u043d\u0451\u0441 \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043d\u0438\u0445?<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">A2<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0410\u0433\u0440\u0435\u0433\u0430\u0442<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0412 \u043a\u0430\u043a\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u043e\u0432 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439 \u0438 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u0445 \u0442\u0430\u043c?<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">P1<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u0443\u0442\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041a\u0430\u043a\u0438\u0435 \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0441\u0442\u0430\u0442\u044c\u0438 \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0442 \u0442\u0430\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 PostgreSQL?<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">P2<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u0443\u0442\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041a\u0430\u043a\u0438\u0435 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u043f\u0440\u044f\u043c\u043e \u0438\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 \u0446\u0435\u043f\u043e\u0447\u043a\u0443 \u0434\u043e\u0432\u043e\u0434\u043e\u0432 \u043f\u043e\u0434\u043a\u0440\u0435\u043f\u043b\u044f\u044e\u0442 \u0442\u0435\u0437\u0438\u0441 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0443\u0436\u0435\u043d \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0434\u0430\u043d\u043d\u044b\u0445, \u043e\u0442\u0434\u0430\u044e\u0449\u0438\u0439 \u043a\u043e\u043b\u043e\u043d\u043a\u0438? \u0421\u0430\u043c \u0442\u0435\u0437\u0438\u0441 \u0432 \u043e\u0442\u0432\u0435\u0442 \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u0439.<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">D1<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u043f\u043e\u0440<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041d\u0430 \u043a\u0430\u043a\u0443\u044e \u0440\u0435\u043f\u043b\u0438\u043a\u0443 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440\u0430 \u0430\u0432\u0442\u043e\u0440 \u043e\u0442\u0432\u0435\u0442\u0438\u043b \u0441 \u0438\u0440\u043e\u043d\u0438\u0435\u0439, \u0438 \u0447\u0442\u043e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440 \u0432 \u043d\u0435\u0439 \u0441\u043e\u0432\u0435\u0442\u043e\u0432\u0430\u043b?<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">D2<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u043f\u043e\u0440<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041a\u0430\u043a\u043e\u0435 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u043e\u0441\u043f\u043e\u0440\u0435\u043d\u043e, \u043a\u0430\u043a\u0438\u043c \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435\u043c, \u0438 \u043e\u043f\u0440\u043e\u0432\u0435\u0440\u0433\u043d\u0443\u0442\u043e \u043b\u0438 \u043e\u043d\u043e?<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">D3<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u043f\u043e\u0440<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432 \u0441\u043f\u043e\u0440\u0430 \u0430\u0432\u0442\u043e\u0440\u0430 \u0441\u043e \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u043c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440\u043e\u043c \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b \u0441\u0432\u043e\u0435\u0439 \u0440\u0435\u043f\u043b\u0438\u043a\u043e\u0439 \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432?<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">C1<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0426\u0438\u0442\u0430\u0442\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0413\u0434\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440 \u0433\u043e\u0432\u043e\u0440\u0438\u0442, \u0447\u0442\u043e \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u044c \u0438 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b? \u0414\u0430\u0439 \u0434\u043e\u0441\u043b\u043e\u0432\u043d\u0443\u044e \u0446\u0438\u0442\u0430\u0442\u0443 \u0438 \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u0440\u043e\u043a\u0438.<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">C2<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0426\u0438\u0442\u0430\u0442\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u0440\u0438\u0432\u0435\u0434\u0438 \u0434\u043e\u0441\u043b\u043e\u0432\u043d\u0443\u044e \u0446\u0438\u0442\u0430\u0442\u0443, \u0433\u0434\u0435 \u0430\u0432\u0442\u043e\u0440 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0434\u043e\u043b\u044e \u044f\u0434\u0435\u0440 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u0438 \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u0440\u043e\u043a\u0438.<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">U1<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0411\u0435\u0437 \u043e\u0442\u0432\u0435\u0442\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041a\u0430\u043a\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0443 \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0430\u0432\u0442\u043e\u0440 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043b PostgreSQL \u0438 ClickHouse?<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">U2<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0411\u0435\u0437 \u043e\u0442\u0432\u0435\u0442\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u043e\u0434 \u043a\u0430\u043a\u043e\u0439 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f pg_vexec?<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041e\u0442\u0432\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c\u0438, \u0431\u0435\u0437 LLM-\u0441\u0443\u0434\u044c\u0438. \u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0443\u0437\u043b\u043e\u0432 \u0434\u043e\u043b\u0436\u043d\u043e \u0441\u043e\u0432\u043f\u0430\u0441\u0442\u044c \u0442\u043e\u0447\u043d\u043e, \u0438 \u043b\u0438\u0448\u043d\u0438\u0439 \u0443\u0437\u0435\u043b \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043e\u0448\u0438\u0431\u043a\u043e\u0439. \u0427\u0438\u0441\u043b\u0430 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0441 \u044d\u0442\u0430\u043b\u043e\u043d\u043e\u043c. \u0426\u0438\u0442\u0430\u0442\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0434\u043e\u0441\u043b\u043e\u0432\u043d\u043e \u0431\u044b\u0442\u044c \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u0441\u0442\u0430\u0442\u044c\u0438. \u041d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 \u0431\u0435\u0437 \u043e\u0442\u0432\u0435\u0442\u0430 \u0437\u0430\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u201c\u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u0442\u201d.<\/p>\n<p>\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b <code>sql<\/code>, <code>sparql<\/code> \u0438 <code>both<\/code> &#8212; \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u0443 \u0430\u0433\u0435\u043d\u0442\u0430 \u043e\u0431\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430. \u041f\u043e\u0442\u043e\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u0435.<\/p>\n<p>\u042f \u0432\u044b\u0431\u0440\u0430\u043b \u0442\u0440\u0438 \u043c\u043e\u0434\u0435\u043b\u0438 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c\u0438 \u0432\u0435\u0441\u0430\u043c\u0438: DeepSeek V4.1 Flash, Gemma 4 31B \u0438 Qwen 3.8 27B. \u0418\u0445 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u0438\u043b\u0438 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043d\u0430 \u0441\u0432\u043e\u0438\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445. \u041f\u0430\u043c\u044f\u0442\u044c \u0430\u0433\u0435\u043d\u0442\u0430 \u043e\u0431\u044b\u0447\u043d\u043e \u0441 \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u0438 \u043f\u043e\u0441\u044b\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u0438\u0439 API \u0442\u0430\u043a \u0441\u0435\u0431\u0435 \u0438\u0434\u0435\u044f. \u0412 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0435 \u0436\u0435 \u044f \u0432\u044b\u0437\u044b\u0432\u0430\u043b \u043c\u043e\u0434\u0435\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 OpenRouter, \u043d\u0430 \u0441\u0432\u043e\u0435\u043c \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0435 \u0438\u043d\u0430\u0447\u0435 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0431\u044b \u0432 \u0440\u0430\u0437\u0443\u043c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u043e\u0433\u043d\u0430\u0442\u044c \u0434\u0430\u0436\u0435 27B-\u043c\u043e\u0434\u0435\u043b\u044c \u0432 4-\u0431\u0438\u0442\u043d\u043e\u0439 \u043a\u0432\u0430\u043d\u0442\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<details class=\"spoiler\">\n<summary>\u042d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b \u0438 \u0446\u0435\u043d\u044b \u043c\u043e\u0434\u0435\u043b\u0435\u0439<\/summary>\n<div class=\"spoiler__content\">\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u041c\u043e\u0434\u0435\u043b\u044c<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u042d\u043d\u0434\u043f\u043e\u0438\u043d\u0442<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0412\u0445\u043e\u0434, $ \u0437\u0430 \u043c\u043b\u043d \u0442\u043e\u043a\u0435\u043d\u043e\u0432<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0418\u0437 \u043a\u044d\u0448\u0430<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0412\u044b\u0445\u043e\u0434<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">DeepSeek V4.1 Flash<\/p>\n<\/td>\n<td>\n<p align=\"left\">deepinfra\/fp8<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,098<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,003<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,294<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Gemma 4 31B<\/p>\n<\/td>\n<td>\n<p align=\"left\">deepinfra\/fp8<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,20<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043a\u044d\u0448\u0430 \u043d\u0435\u0442<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,40<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Qwen 3.8 27B<\/p>\n<\/td>\n<td>\n<p align=\"left\">deepinfra\/bf16, \u0437\u0430\u043f\u0430\u0441\u043d\u043e\u0439 cerebras\/fp16<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,15 (0,99)<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,037 (0,99)<\/p>\n<\/td>\n<td>\n<p align=\"left\">1,875 (1,49)<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><em>\u0426\u0435\u043d\u044b OpenRouter \u043d\u0430 27 \u043e\u043a\u0442\u044f\u0431\u0440\u044f 2026 \u0433\u043e\u0434\u0430. \u0421\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u0430\u0433\u0435\u043d\u0442 \u0431\u0440\u0430\u043b \u0438\u0437 \u043e\u0442\u0432\u0435\u0442\u0430 OpenRouter (<\/em><code><em>usage.cost<\/em><\/code><em>). \u041f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0443 \u0441\u0435\u0431\u044f \u0446\u0435\u043d\u0443 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442 \u0436\u0435\u043b\u0435\u0437\u043e, \u0430 \u043d\u0435 \u0442\u0430\u0440\u0438\u0444.<\/em><\/p>\n<\/div>\n<\/details>\n<p>\u041a\u0430\u0436\u0434\u0430\u044f \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u043b\u0430\u0441\u044c \u0442\u0440\u0438\u0436\u0434\u044b: 3 \u043c\u043e\u0434\u0435\u043b\u0438 x 3 \u0443\u0441\u043b\u043e\u0432\u0438\u044f x 15 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 x 3 \u043f\u043e\u0432\u0442\u043e\u0440\u0430 &#8212; 405 \u043f\u0440\u043e\u0433\u043e\u043d\u043e\u0432 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u044f\u0437\u044b\u043a \u0432 \u0431\u0430\u0437\u0435. \u041f\u0440\u043e\u0433\u043e\u043d\u044b \u0448\u043b\u0438 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e, \u043f\u043e 8 \u043d\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0435, \u0438 \u0432\u0441\u0435 405 \u0437\u0430\u043d\u044f\u043b\u0438 10 \u043c\u0438\u043d\u0443\u0442.<\/p>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0442\u0440\u043e\u0433\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043b\u043e\u0432\u0438\u043b\u0430 \u0441\u043a\u043e\u0440\u0435\u0435 \u0444\u043e\u0440\u043c\u0430\u0442 \u043e\u0442\u0432\u0435\u0442\u0430. \u0421\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0448\u044c, \u0447\u0442\u043e \u043f\u043e\u0434\u043a\u0440\u0435\u043f\u043b\u044f\u0435\u0442 \u0442\u0435\u0437\u0438\u0441, \u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043a \u043e\u0442\u0432\u0435\u0442\u0443 \u0441\u0430\u043c \u0442\u0435\u0437\u0438\u0441. \u041f\u0440\u043e\u0441\u0438\u0448\u044c \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0440\u0435\u043f\u043b\u0438\u043a\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430, \u0430 \u043e\u043d\u0430 \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u043f\u043e \u0434\u0438\u0430\u043b\u043e\u0433\u0430\u043c. \u0422\u0430\u043a \u0432 \u043e\u0442\u0432\u0435\u0442\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u043f\u043e\u043b\u0435 <code>context<\/code>, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043d\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u044d\u0442\u0438\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439. \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0437\u0430\u0431\u044b\u0432\u0430\u043b\u0438 \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0442\u044c \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u044b \u0432 SPARQL \u0442\u043e\u0433\u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u041f\u043e\u0441\u043b\u0435 \u0432\u0441\u0435\u0445 \u044d\u0442\u0438\u0445 \u043f\u0440\u0430\u0432\u043e\u043a \u043f\u0440\u043e\u0431\u043d\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u0434\u0430\u043b 26 \u0432\u0435\u0440\u043d\u044b\u0445 \u043e\u0442\u0432\u0435\u0442\u043e\u0432 \u0438\u0437 27.<\/p>\n<h3>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b<\/h3>\n<p>\u0422\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u043d\u0430 \u0431\u0430\u0437\u0435 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 ru\/en:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u041c\u043e\u0434\u0435\u043b\u044c<\/p>\n<\/th>\n<th>\n<p align=\"left\">RU sql<\/p>\n<\/th>\n<th>\n<p align=\"left\">RU sparql<\/p>\n<\/th>\n<th>\n<p align=\"left\">RU both<\/p>\n<\/th>\n<th>\n<p align=\"left\">EN sql<\/p>\n<\/th>\n<th>\n<p align=\"left\">EN sparql<\/p>\n<\/th>\n<th>\n<p align=\"left\">EN both<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">DeepSeek V4.1 Flash<\/p>\n<\/td>\n<td>\n<p align=\"left\">45\/45<\/p>\n<\/td>\n<td>\n<p align=\"left\">45\/45<\/p>\n<\/td>\n<td>\n<p align=\"left\">45\/45<\/p>\n<\/td>\n<td>\n<p align=\"left\">45\/45<\/p>\n<\/td>\n<td>\n<p align=\"left\">45\/45<\/p>\n<\/td>\n<td>\n<p align=\"left\">45\/45<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Gemma 4 31B<\/p>\n<\/td>\n<td>\n<p align=\"left\">42\/45<\/p>\n<\/td>\n<td>\n<p align=\"left\">44\/45<\/p>\n<\/td>\n<td>\n<p align=\"left\">43\/45<\/p>\n<\/td>\n<td>\n<p align=\"left\">45\/45<\/p>\n<\/td>\n<td>\n<p align=\"left\">44\/45<\/p>\n<\/td>\n<td>\n<p align=\"left\">44\/45<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Qwen 3.8 27B<\/p>\n<\/td>\n<td>\n<p align=\"left\">45\/45<\/p>\n<\/td>\n<td>\n<p align=\"left\">44\/45<\/p>\n<\/td>\n<td>\n<p align=\"left\">45\/45<\/p>\n<\/td>\n<td>\n<p align=\"left\">43\/45<\/p>\n<\/td>\n<td>\n<p align=\"left\">45\/45<\/p>\n<\/td>\n<td>\n<p align=\"left\">43\/45<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0412\u0441\u0435\u0433\u043e<\/p>\n<\/td>\n<td>\n<p align=\"left\">97,8 %<\/p>\n<\/td>\n<td>\n<p align=\"left\">98,5 %<\/p>\n<\/td>\n<td>\n<p align=\"left\">98,5 %<\/p>\n<\/td>\n<td>\n<p align=\"left\">98,5 %<\/p>\n<\/td>\n<td>\n<p align=\"left\">99,3 %<\/p>\n<\/td>\n<td>\n<p align=\"left\">97,8 %<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>DeepSeek \u043e\u0442\u0432\u0435\u0442\u0438\u043b \u0432\u0435\u0440\u043d\u043e \u0432\u0441\u0435 270 \u0440\u0430\u0437. \u0418\u0437 13 \u043e\u0448\u0438\u0431\u043e\u043a Gemma \u0438 Qwen 12 \u043f\u0440\u0438\u0448\u043b\u0438\u0441\u044c \u043d\u0430 \u0434\u0432\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u0430, P1 \u0438 D3.<\/p>\n<p>\u0426\u0435\u043d\u0430 \u0438 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u041c\u043e\u0434\u0435\u043b\u044c<\/p>\n<\/th>\n<th>\n<p align=\"left\">$ \u0437\u0430 \u043f\u0440\u043e\u0433\u043e\u043d, RU \/ EN<\/p>\n<\/th>\n<th>\n<p align=\"left\">$ \u0437\u0430 \u0432\u0435\u0440\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442, RU<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u041c\u0435\u0434\u0438\u0430\u043d\u0430, \u0441, RU \/ EN<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0412\u0445\u043e\u0434\u043d\u044b\u0445 \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0437\u0430 \u043f\u0440\u043e\u0433\u043e\u043d<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0418\u0437 \u043d\u0438\u0445 \u0438\u0437 \u043a\u044d\u0448\u0430<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">DeepSeek<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,0009 \/ 0,0009<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,0009<\/p>\n<\/td>\n<td>\n<p align=\"left\">13 \/ 12<\/p>\n<\/td>\n<td>\n<p align=\"left\">81 \u0442\u044b\u0441.<\/p>\n<\/td>\n<td>\n<p align=\"left\">97 %<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Qwen<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,0077 \/ 0,0104<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,0077<\/p>\n<\/td>\n<td>\n<p align=\"left\">38 \/ 50<\/p>\n<\/td>\n<td>\n<p align=\"left\">83 \u0442\u044b\u0441.<\/p>\n<\/td>\n<td>\n<p align=\"left\">87 %<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Gemma<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,0234 \/ 0,0225<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,0245<\/p>\n<\/td>\n<td>\n<p align=\"left\">57 \/ 61<\/p>\n<\/td>\n<td>\n<p align=\"left\">114 \u0442\u044b\u0441.<\/p>\n<\/td>\n<td>\n<p align=\"left\">0 %<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0417\u0430 \u043f\u0440\u043e\u0433\u043e\u043d \u0430\u0433\u0435\u043d\u0442 \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043a \u043c\u043e\u0434\u0435\u043b\u0438 \u0432 \u0441\u0440\u0435\u0434\u043d\u0435\u043c 4\u20137 \u0440\u0430\u0437, \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0437\u0430\u043d\u043e\u0432\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u043c\u043f\u0442 \u043d\u0430 15\u201317 \u0442\u044b\u0441. \u0442\u043e\u043a\u0435\u043d\u043e\u0432. \u0425\u043e\u0440\u043e\u0448\u043e \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u0440\u043e\u043c\u043f\u0442\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 DeepInfra \u043a\u044d\u0448\u0438\u0440\u0443\u0435\u0442 DeepSeek \u0438 \u043d\u0435 \u043a\u044d\u0448\u0438\u0440\u0443\u0435\u0442 Gemma, \u0438 \u0441 \u0442\u0435\u043c\u0438 \u0436\u0435 \u043e\u0442\u0432\u0435\u0442\u0430\u043c\u0438 Gemma \u043e\u0431\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 25\u201327 \u0440\u0430\u0437 \u0434\u043e\u0440\u043e\u0436\u0435.<\/p>\n<p>SPARQL \u043c\u043d\u0435 \u0432\u044b\u0448\u0435\u043b \u0434\u043e\u0440\u043e\u0436\u0435 SQL \u043f\u0440\u0438 \u0442\u043e\u0439 \u0436\u0435 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438. \u041e\u0448\u0438\u0431\u043e\u043a \u0431\u0430\u0437\u044b \u043d\u0430 \u043e\u0434\u0438\u043d \u0432\u044b\u0437\u043e\u0432 \u0432 \u043d\u0451\u043c \u0432 2\u20133 \u0440\u0430\u0437\u0430 \u0431\u043e\u043b\u044c\u0448\u0435: 5,9 % \u0432 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 \u0441 2,8 % \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u0439 \u0431\u0430\u0437\u0435 \u0438 7,3 % \u0432 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 \u0441 2,5 % \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u0439. \u0426\u0435\u043d\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0440\u0430\u0441\u0442\u0451\u0442 \u0443 \u0432\u0441\u0435\u0445 \u0442\u0440\u0451\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u041c\u043e\u0434\u0435\u043b\u044c<\/p>\n<\/th>\n<th>\n<p align=\"left\">RU: sql \u2192 sparql, $ \u0437\u0430 \u043f\u0440\u043e\u0433\u043e\u043d<\/p>\n<\/th>\n<th>\n<p align=\"left\">EN: sql \u2192 sparql, $ \u0437\u0430 \u043f\u0440\u043e\u0433\u043e\u043d<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">DeepSeek<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,0008 \u2192 0,0010 (+25 %)<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,0009 \u2192 0,0010 (+11 %)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Gemma<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,0218 \u2192 0,0234 (+7 %)<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,0212 \u2192 0,0234 (+10 %)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Qwen<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,0063 \u2192 0,0103 (+63 %)<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,0064 \u2192 0,0157 (+145 %)<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0410\u0433\u0435\u043d\u0442\u044b \u0445\u043e\u0440\u043e\u0448\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u0430\u043c\u0438: \u0447\u0438\u0442\u0430\u044e\u0442 \u0442\u0435\u043a\u0441\u0442 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442 \u0437\u0430\u043f\u0440\u043e\u0441. \u0418\u0437 134 \u043f\u0440\u043e\u0433\u043e\u043d\u043e\u0432, \u0433\u0434\u0435 \u0431\u0430\u0437\u0430 \u0432\u0435\u0440\u043d\u0443\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0443, 129 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0438\u0441\u044c \u0432\u0435\u0440\u043d\u044b\u043c \u043e\u0442\u0432\u0435\u0442\u043e\u043c.<\/p>\n<p>\u0421 \u0434\u0432\u0443\u043c\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0432\u0441\u0435 \u0442\u0440\u0438 \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u043b\u0438 \u0441 SQL \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u043f\u0440\u043e\u0433\u043e\u043d\u0435. \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0437\u0434\u0435\u0441\u044c \u043d\u0438 \u043f\u0440\u0438 \u0447\u0451\u043c: \u0432 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u043c \u0443\u0441\u043b\u043e\u0432\u0438\u0438 <code>both_sparql_first<\/code> SPARQL \u0448\u0451\u043b \u043f\u0435\u0440\u0432\u044b\u043c \u0432\u0435\u0437\u0434\u0435: \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0432\u043e \u0444\u0440\u0430\u0437\u0435 \u043f\u0440\u043e\u043c\u043f\u0442\u0430 \u043e \u043d\u0438\u0445 \u0438 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043e\u043a. SQL \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043b\u0438\u0434\u0438\u0440\u043e\u0432\u0430\u043b \u0432 131 \u043f\u0440\u043e\u0433\u043e\u043d\u0435 \u0438\u0437 135.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0423\u0441\u043b\u043e\u0432\u0438\u0435<\/p>\n<\/th>\n<th>\n<p align=\"left\">SQL \u043f\u0435\u0440\u0432\u044b\u043c<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0412\u044b\u0437\u043e\u0432\u043e\u0432 SPARQL<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u041f\u0440\u043e\u0433\u043e\u043d\u043e\u0432, \u0433\u0434\u0435 \u0431\u044b\u043b SPARQL<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0412\u0435\u0440\u043d\u044b\u0445<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">both, RU<\/p>\n<\/td>\n<td>\n<p align=\"left\">135 \u0438\u0437 135<\/p>\n<\/td>\n<td>\n<p align=\"left\">17 \u0438\u0437 691<\/p>\n<\/td>\n<td>\n<p align=\"left\">12<\/p>\n<\/td>\n<td>\n<p align=\"left\">133\/135<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">both, EN<\/p>\n<\/td>\n<td>\n<p align=\"left\">135 \u0438\u0437 135<\/p>\n<\/td>\n<td>\n<p align=\"left\">25 \u0438\u0437 661<\/p>\n<\/td>\n<td>\n<p align=\"left\">16<\/p>\n<\/td>\n<td>\n<p align=\"left\">132\/135<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">both_sparql_first, RU<\/p>\n<\/td>\n<td>\n<p align=\"left\">131 \u0438\u0437 135<\/p>\n<\/td>\n<td>\n<p align=\"left\">23 \u0438\u0437 660<\/p>\n<\/td>\n<td>\n<p align=\"left\">16<\/p>\n<\/td>\n<td>\n<p align=\"left\">131\/135<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>SPARQL \u043c\u043e\u0434\u0435\u043b\u0438 \u0431\u0435\u0440\u0443\u0442 \u0442\u043e\u0433\u0434\u0430, \u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0437\u043d\u0430\u044e\u0442, \u0433\u0434\u0435 \u0438\u0441\u043a\u0430\u0442\u044c. \u0427\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e \u0441\u043b\u0443\u0447\u0430\u043b\u043e\u0441\u044c \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u0435 \u043e \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438 pg_vexec, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u043d\u0435\u0442. \u0421\u0445\u0435\u043c\u0430 \u043d\u0435 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0432 \u043a\u0430\u043a\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f, \u0430 \u0433\u0440\u0430\u0444 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0434\u043d\u0438\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u0441\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0443\u0437\u043b\u0430: <code>SELECT ?p ?o WHERE { &lt;pg_vexec&gt; ?p ?o }<\/code>. DeepSeek \u0442\u0430\u043a \u0438 \u0440\u0430\u0441\u0441\u0443\u0436\u0434\u0430\u043b: \u201cSearch all columns for \u201c\u043b\u0438\u0446\u0435\u043d\u0437\u201d via SPARQL across literals\u201d.<\/p>\n<p>\u0412\u0441\u0435 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u043c\u043e\u0434\u0435\u043b\u044f\u043c \u0448\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 OpenRouter: 1389 \u043f\u0440\u043e\u0433\u043e\u043d\u043e\u0432 \u043e\u0431\u043e\u0448\u043b\u0438\u0441\u044c \u0432 $12.80. \u0418\u0437 $10,68 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u0440\u043e\u0433\u043e\u043d\u044b 70 % \u0443\u0448\u043b\u043e \u043d\u0430 Gemma: $7,46 \u0430 \u043d\u0430 DeepSeek $0,28.<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0438 \u0432\u0440\u0435\u043c\u044f \u043f\u043e \u043d\u0430\u0431\u043e\u0440\u0430\u043c \u043f\u0440\u043e\u0433\u043e\u043d\u043e\u0432<\/summary>\n<div class=\"spoiler__content\">\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u041f\u0440\u043e\u0433\u043e\u043d\u044b<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u041f\u0440\u043e\u0433\u043e\u043d\u043e\u0432<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0412\u0435\u0440\u043d\u044b\u0445<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0421\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0412\u0440\u0435\u043c\u044f<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041f\u0438\u043b\u043e\u0442\u044b \u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">197<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;<\/p>\n<\/td>\n<td>\n<p align=\"left\">$1,87<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439, \u0440\u0443\u0441\u0441\u043a\u0430\u044f \u0431\u0430\u0437\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">405<\/p>\n<\/td>\n<td>\n<p align=\"left\">398<\/p>\n<\/td>\n<td>\n<p align=\"left\">$4,32<\/p>\n<\/td>\n<td>\n<p align=\"left\">10 \u043c\u0438\u043d<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u044c <code>both_sparql_first<\/code>, \u0440\u0443\u0441\u0441\u043a\u0430\u044f \u0431\u0430\u0437\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">135<\/p>\n<\/td>\n<td>\n<p align=\"left\">131<\/p>\n<\/td>\n<td>\n<p align=\"left\">$1,52<\/p>\n<\/td>\n<td>\n<p align=\"left\">8 \u043c\u0438\u043d<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439, \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0430\u044f \u0431\u0430\u0437\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">405<\/p>\n<\/td>\n<td>\n<p align=\"left\">399<\/p>\n<\/td>\n<td>\n<p align=\"left\">$4,56<\/p>\n<\/td>\n<td>\n<p align=\"left\">11 \u043c\u0438\u043d<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">D3 \u0432 \u043d\u043e\u0432\u043e\u0439 \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u043a\u0435, \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0430\u044f \u0431\u0430\u0437\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">27<\/p>\n<\/td>\n<td>\n<p align=\"left\">27<\/p>\n<\/td>\n<td>\n<p align=\"left\">$0,28<\/p>\n<\/td>\n<td>\n<p align=\"left\">3 \u043c\u0438\u043d<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041a\u043e\u0440\u043f\u0443\u0441 \u0441\u0442\u0430\u0442\u0435\u0439, DeepSeek: \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u0440\u043e\u0433\u043e\u043d, \u043f\u043e\u0438\u0441\u043a \u043e\u0442 \u0440\u043e\u043b\u0438 <code>agent_sql<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">112<\/p>\n<\/td>\n<td>\n<p align=\"left\">95 \u0438\u0437 108<\/p>\n<\/td>\n<td>\n<p align=\"left\">$0,12<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041a\u043e\u0440\u043f\u0443\u0441 \u0441\u0442\u0430\u0442\u0435\u0439, DeepSeek: \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439<\/p>\n<\/td>\n<td>\n<p align=\"left\">108<\/p>\n<\/td>\n<td>\n<p align=\"left\">91<\/p>\n<\/td>\n<td>\n<p align=\"left\">$0,13<\/p>\n<\/td>\n<td>\n<p align=\"left\">10 \u043c\u0438\u043d<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong>\u0412\u0441\u0435\u0433\u043e<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>1 389<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\">\n<\/td>\n<td>\n<p align=\"left\"><strong>$12,80<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\">\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<\/details>\n<p>\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043e\u0448\u0438\u0431\u043e\u043a SPARQL &#8212; \u044d\u0442\u043e \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u0430\u043a \u0432 SQL: <code>LOWER()<\/code> \u0432\u043c\u0435\u0441\u0442\u043e <code>LCASE()<\/code>, <code>SELECT COUNT(?d)<\/code> \u0431\u0435\u0437 <code>(COUNT(?d) AS ?n)<\/code>, \u044f\u0437\u044b\u043a\u043e\u0432\u043e\u0439 \u0442\u0435\u0433 \u0443 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 (<code>schema:name ?name@ru<\/code>). \u0412 SQL \u043c\u043e\u0434\u0435\u043b\u0438 \u0443\u0433\u0430\u0434\u044b\u0432\u0430\u044e\u0442 \u043d\u0435\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043a\u043e\u043b\u043e\u043d\u043a\u0438 (<code>article.id<\/code> \u0432\u043c\u0435\u0441\u0442\u043e <code>slug<\/code>), \u0441\u043a\u043b\u0435\u0438\u0432\u0430\u044e\u0442 \u0447\u0435\u0440\u0435\u0437 <code>UNION<\/code> \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0441 \u0440\u0430\u0437\u043d\u044b\u043c \u0447\u0438\u0441\u043b\u043e\u043c \u043a\u043e\u043b\u043e\u043d\u043e\u043a, \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e\u0442 \u043c\u0430\u0441\u0441\u0438\u0432 \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442 <code>text[] = text<\/code>.<\/p>\n<p>\u041d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u0439 \u0431\u0430\u0437\u0435 Qwen \u0442\u0440\u0438\u0436\u0434\u044b \u043e\u0448\u0438\u0431\u0441\u044f \u0432 D3. \u0414\u0432\u0430\u0436\u0434\u044b \u043e\u043d \u043f\u043e\u043d\u044f\u043b \u0444\u0440\u0430\u0437\u0443 \u201cdid each side end with its own reply\u201d \u043a\u0430\u043a \u201c\u0441\u0442\u043e\u0440\u043e\u043d\u0430 \u043e\u0442\u0432\u0435\u0442\u0438\u043b\u0430 \u0441\u0430\u043c\u0430 \u0441\u0435\u0431\u0435\u201d: \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0437\u0430\u0441\u0447\u0438\u0442\u0430\u043b \u0430\u0432\u0442\u043e\u0440\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0438\u0430\u043b\u043e\u0433, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u043e\u0442 \u0438 \u043d\u0430\u0447\u0430\u043b, \u0438 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b. \u0412 \u0442\u0440\u0435\u0442\u0438\u0439 \u0440\u0430\u0437 \u0438\u0442\u043e\u0433 \u0432 \u0442\u0435\u043a\u0441\u0442\u0435 \u0431\u044b\u043b \u0432\u0435\u0440\u043d\u044b\u0439, \u043d\u043e \u0432 \u0443\u0437\u043b\u044b \u043e\u0442\u0432\u0435\u0442\u0430 \u043f\u043e\u043f\u0430\u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u043e \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0434\u0438\u0430\u043b\u043e\u0433\u0443. \u0420\u0443\u0441\u0441\u043a\u0430\u044f \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u043a\u0430 \u201c\u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b \u0441\u0432\u043e\u0435\u0439 \u0440\u0435\u043f\u043b\u0438\u043a\u043e\u0439\u201d \u0442\u0430\u043a\u043e\u0439 \u043f\u0443\u0442\u0430\u043d\u0438\u0446\u044b \u043d\u0435 \u0434\u0430\u043b\u0430. \u0421 \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u043a\u043e\u0439 \u201cdid each side have the last word\u201d \u0432\u0441\u0435 27 \u043f\u0440\u043e\u0433\u043e\u043d\u043e\u0432 \u0434\u0430\u043b\u0438 \u0432\u0435\u0440\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442, Qwen &#8212; 9 \u0438\u0437 9 \u0432\u043c\u0435\u0441\u0442\u043e 6 \u0438\u0437 9. \u0412\u043e\u043f\u0440\u043e\u0441 \u044f \u0438\u0437\u043c\u0435\u043d\u0438\u043b \u0443\u0436\u0435 \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0443\u0432\u0438\u0434\u0435\u043b \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0432\u044b\u0448\u0435 \u043e\u0441\u0442\u0430\u043b\u0430\u0441\u044c \u0441\u0442\u0430\u0440\u0430\u044f \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u043a\u0430.<\/p>\n<p>\u041d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0431\u0435\u0437 \u043e\u0442\u0432\u0435\u0442\u0430 \u0432\u0441\u0435 126 \u043f\u0440\u043e\u0433\u043e\u043d\u043e\u0432 \u0432\u043e \u0432\u0441\u0435\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u043e\u0442\u0432\u0435\u0442\u0438\u043b\u0438 \u201c\u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u0442\u201d. \u041d\u0438 \u043e\u0434\u043d\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0435 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0430 \u0438\u043b\u0438 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044e. \u041d\u043e \u043f\u0435\u0440\u0435\u0434 \u044d\u0442\u0438\u043c \u0430\u0433\u0435\u043d\u0442 \u043e\u0431\u0445\u043e\u0434\u0438\u0442 \u0432\u0441\u044e \u043f\u0430\u043c\u044f\u0442\u044c: \u043c\u0435\u0434\u0438\u0430\u043d\u0430 &#8212; 12 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u0440\u043e\u0442\u0438\u0432 3 \u043d\u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u0445. \u041d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0431\u0430\u0437\u0435 59 \u043f\u0440\u043e\u0433\u043e\u043d\u043e\u0432 \u0443\u043f\u0451\u0440\u043b\u0438\u0441\u044c \u0432 \u043b\u0438\u043c\u0438\u0442 \u0432 12 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u0438 \u0432\u0441\u0435 \u043e\u043d\u0438 &#8212; \u043d\u0430 \u0434\u0432\u0443\u0445 \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u0445 \u0431\u0435\u0437 \u043e\u0442\u0432\u0435\u0442\u0430 \u0438 \u043d\u0430 P1.<\/p>\n<h3>\u041e\u0431\u044b\u0447\u043d\u044b\u0439 RAG \u0440\u044f\u0434\u043e\u043c \u0441 \u0433\u0440\u0430\u0444\u043e\u0432\u044b\u043c<\/h3>\n<p>\u0413\u0440\u0430\u0444 \u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0445\u043e\u0440\u043e\u0448\u0438, \u043a\u043e\u0433\u0434\u0430 \u0437\u043d\u0430\u043d\u0438\u044f \u0443\u0436\u0435 \u0440\u0430\u0437\u043b\u043e\u0436\u0435\u043d\u044b \u043f\u043e \u043f\u043e\u043b\u044f\u043c. \u0427\u0430\u0449\u0435 \u043f\u0430\u043c\u044f\u0442\u044c \u0430\u0433\u0435\u043d\u0442\u0430 &#8212; \u0433\u0440\u0443\u0434\u0430 \u0442\u0435\u043a\u0441\u0442\u043e\u0432, \u0438 \u0438\u0441\u043a\u0430\u0442\u044c \u0432 \u043d\u0435\u0439 \u043f\u0440\u043e\u0449\u0435 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u0430\u043c.<\/p>\n<p>\u041a\u043e\u0440\u043f\u0443\u0441 \u0432\u0437\u044f\u043b \u0438\u0437 \u0441\u0432\u043e\u0435\u0433\u043e <a href=\"https:\/\/habr.com\/ru\/articles\/1036594\/\" rel=\"noopener nofollow\">\u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u043e \u0441\u043c\u044b\u0441\u043b\u0443 \u0438 \u043f\u043e\u043b\u044f\u043c \u043f\u0440\u044f\u043c\u043e \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435<\/a>: 13275 \u0441\u0442\u0430\u0442\u0435\u0439 \u0425\u0430\u0431\u0440\u0430, \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u0437\u0430 2023 \u0433\u043e\u0434. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 LLM \u0438\u0437\u0432\u043b\u0435\u043a\u043b\u0430 \u043a\u0440\u0430\u0442\u043a\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435, \u0441\u043c\u044b\u0441\u043b, \u0442\u0435\u043c\u044b, \u0432\u044b\u0432\u043e\u0434\u044b, \u0436\u0430\u043d\u0440, \u0442\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u043e\u0446\u0435\u043d\u043a\u0438 \u0434\u0435\u043c\u0430\u0433\u043e\u0433\u0438\u0438 \u0438 \u0440\u0435\u043a\u043b\u0430\u043c\u044b, \u0430 EmbeddingGemma 300M \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u043b\u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u044b \u044d\u0442\u0438\u0445 \u0442\u0435\u043a\u0441\u0442\u043e\u0432: 147432 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438 768. \u0412\u0441\u0451 \u044d\u0442\u043e \u043b\u0435\u0436\u0438\u0442 \u0432 parquet-\u0444\u0430\u0439\u043b\u0430\u0445 \u043d\u0430 GitHub Pages.<\/p>\n<p>\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u043b \u043f\u0440\u044f\u043c\u043e \u0441 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e DuckDB 2.0 \u0447\u0435\u0440\u0435\u0437 JDBC-\u0434\u0440\u0430\u0439\u0432\u0435\u0440. DuckDB \u0447\u0438\u0442\u0430\u043b parquet \u043f\u0440\u044f\u043c\u043e \u043f\u043e HTTPS, \u0430 <code>COPY<\/code> \u043f\u0435\u0440\u0435\u043d\u0435\u0441 \u044d\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 PostgreSQL.<\/p>\n<details class=\"spoiler\">\n<summary>\u041a\u043e\u0434 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438: DuckDB JDBC \u0438 COPY<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"java\">try (Connection duck = DriverManager.getConnection(\"jdbc:duckdb:\");     ResultSet rs = duck.createStatement().executeQuery(\"\"\"             SELECT e.task_id, e.embedding_name, e.index, \u2026, e.embedding_vector,                    a.genre['primary_genre'] AS primary_genre, a.sentiment['polarity'] AS polarity, \u2026             FROM read_parquet(['\u2026\/data_0.parquet', \u2026, '\u2026\/data_42.parquet']) e             JOIN read_parquet('\u2026\/indexed_text.parquet') a USING (task_id)\"\"\")) {    CopyIn in = pg.unwrap(PGConnection.class).getCopyAPI()            .copyIn(\"COPY corpus.text_embeddings (\u2026) FROM STDIN\");    \/\/ \u0441\u0442\u0440\u043e\u043a\u0430 \u0437\u0430 \u0441\u0442\u0440\u043e\u043a\u043e\u0439: \u0432\u0435\u043a\u0442\u043e\u0440 \u043a\u0430\u043a '[0.012,-0.034,\u2026]', \u043c\u0430\u0441\u0441\u0438\u0432 \u043a\u0430\u043a '{\"\u2026\",\"\u2026\"}'}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<\/div>\n<\/details>\n<p>\u0420\u044f\u0434\u043e\u043c \u0441 \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u0430\u043c\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445 \u0442\u0435\u043a\u0441\u0442, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0438\u0445 \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u043b; \u0443 \u0442\u0435\u043c\u044b \u044d\u0442\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u043e\u0431\u0435\u043b. \u0417\u0430\u043f\u0440\u043e\u0441\u044b \u0430\u0433\u0435\u043d\u0442\u0430 \u0441\u0447\u0438\u0442\u0430\u0435\u0442 ollama \u0442\u043e\u0439 \u0436\u0435 \u043c\u043e\u0434\u0435\u043b\u044c\u044e, \u0438 \u0434\u043b\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432 \u043a\u043e\u0440\u043f\u0443\u0441\u0430 \u043e\u043d\u0430 \u0434\u0430\u0451\u0442 \u0442\u0435 \u0436\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u044b: \u043a\u043e\u0441\u0438\u043d\u0443\u0441 \u0431\u043e\u043b\u044c\u0448\u0435 0,999.<\/p>\n<h4>pgvector \u0438\u043b\u0438 Lance<\/h4>\n<p>\u0425\u0440\u0430\u043d\u0438\u0442\u044c \u0432\u0435\u043a\u0442\u043e\u0440\u044b \u0432 PostgreSQL \u043c\u043e\u0436\u043d\u043e \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0434\u0432\u0443\u043c\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438. \u041f\u0435\u0440\u0432\u044b\u0439 &#8212; \u043e\u0431\u044b\u0447\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0438 pgvector \u0441 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u043c HNSW \u0438\u043b\u0438 IVFFlat. \u0412\u0442\u043e\u0440\u043e\u0439 \u044f \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u043d\u0435\u0434\u0430\u0432\u043d\u043e &#8212; \u0442\u0430\u0431\u043b\u0438\u0446\u0430 <code>USING lance<\/code> \u0438\u0437 <a href=\"https:\/\/github.com\/igor-suhorukov\/pg_lance_tam\" rel=\"noopener nofollow\">pg_lance_tam<\/a>: \u0435\u0451 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 Lance, \u0430 PostgreSQL \u0432\u0438\u0434\u0438\u0442 \u043e\u0431\u044b\u0447\u043d\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0443\u044e \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438. \u0418\u043d\u0434\u0435\u043a\u0441\u044b \u0443 \u0442\u0430\u043a\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0435 IVF_HNSW_SQ \u0438 IVF_PQ, \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u044b\u0435 BTREE \u0438 BITMAP.<\/p>\n<p>\u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 Lance \u0432 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0445. \u041e\u043d \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0434\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430, \u0435\u0441\u043b\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u043f\u043e \u043a\u043e\u043b\u043e\u043d\u043a\u0430\u043c \u0442\u043e\u0439 \u0436\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u043b\u044f \u0441\u0442\u0430\u0442\u044c\u0438, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u0443\u044e\u0442 \u043f\u043e\u0438\u0441\u043a, \u044f \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u043b \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u0441 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u043c: \u0436\u0430\u043d\u0440, \u0442\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u0434\u0430\u0442\u0443, \u0440\u0435\u0439\u0442\u0438\u043d\u0433, \u0442\u0438\u043f \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438.<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u043b\u0430\u043d \u0437\u0430\u043f\u0440\u043e\u0441\u0430 Lance: \u0444\u0438\u043b\u044c\u0442\u0440 \u0434\u043e \u043f\u043e\u0438\u0441\u043a\u0430<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>Custom Scan (LanceScan) on text_embeddings (actual rows=10.00 loops=1)  Filter: (polarity = 'negative'::text)  Lance Filter: (`polarity` = 'negative')  Lance Search: embedding_vector &lt;=&gt; $query, k=10, metric=cosine, prefilter<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<\/div>\n<\/details>\n<p>HNSW \u0432 pgvector \u0434\u0435\u043b\u0430\u0435\u0442 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442: \u0431\u0435\u0440\u0451\u0442 \u0438\u0437 \u0433\u0440\u0430\u0444\u0430 <code>ef_search<\/code> = 40 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0445 \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u043e\u043c \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 \u043d\u0435\u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0435. \u0421 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u043c \u043f\u043e \u043d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0442\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 (4 % \u0441\u0442\u0440\u043e\u043a) \u043e\u0442 \u0434\u0435\u0441\u044f\u0442\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043e\u0434\u0438\u043d.<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u043b\u0430\u043d \u0437\u0430\u043f\u0440\u043e\u0441\u0430 pgvector: \u0444\u0438\u043b\u044c\u0442\u0440 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u0438\u0441\u043a\u0430<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>Limit (actual rows=1.00 loops=1)  -&gt;  Index Scan using heap_hnsw on text_embeddings (actual rows=1.00 loops=1)        Order By: (embedding_vector &lt;=&gt; $1)        Filter: (polarity = 'negative'::text)        Rows Removed by Filter: 39<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<\/div>\n<\/details>\n<p>\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u044f \u043f\u0440\u043e\u0433\u043d\u0430\u043b \u0432 Testcontainers-\u0442\u0435\u0441\u0442\u0435 \u043d\u0430 \u043e\u0434\u043d\u0438\u0445 \u0438 \u0442\u0435\u0445 \u0436\u0435 \u0441\u0442\u0440\u043e\u043a\u0430\u0445: 147432 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u0432 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 Lance, 20 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, 11 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 &#8212; \u043e\u0442 \u201c\u0431\u0435\u0437 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u201d \u0434\u043e 252 \u0441\u0442\u0440\u043e\u043a. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430 \u0442\u0435\u0441\u0442 \u043c\u0435\u0440\u044f\u0435\u0442 \u0432\u0440\u0435\u043c\u044f \u0438 \u0434\u043e\u043b\u044e \u0442\u043e\u0447\u043d\u044b\u0445 \u0434\u0435\u0441\u044f\u0442\u0438 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0445 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 (recall@10).<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\n<\/th>\n<th>\n<p align=\"left\">pgvector (heap)<\/p>\n<\/th>\n<th>\n<p align=\"left\">Lance<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0421\u0442\u0440\u043e\u043a\u0438 \u0441 \u0432\u0435\u043a\u0442\u043e\u0440\u0430\u043c\u0438<\/p>\n<\/td>\n<td>\n<p align=\"left\">677 \u041c\u0411<\/p>\n<\/td>\n<td>\n<p align=\"left\">453 \u041c\u0411<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0412\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 \u0438\u043d\u0434\u0435\u043a\u0441<\/p>\n<\/td>\n<td>\n<p align=\"left\">HNSW: 17\u201331 \u0441, 575 \u041c\u0411<\/p>\n<\/td>\n<td>\n<p align=\"left\">IVF_HNSW_SQ, 16 \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432: 2,3\u20132,8 \u0441, 136 \u041c\u0411<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0418\u043d\u0434\u0435\u043a\u0441 \u0441 \u0433\u0440\u0443\u0431\u043e\u0439 \u0440\u0430\u0437\u0431\u0438\u0432\u043a\u043e\u0439<\/p>\n<\/td>\n<td>\n<p align=\"left\">IVFFlat, 150 \u0441\u043f\u0438\u0441\u043a\u043e\u0432: 2 \u0441, 577 \u041c\u0411<\/p>\n<\/td>\n<td>\n<p align=\"left\">IVF_PQ: 12 \u0441, 9 \u041c\u0411<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0421\u0431\u043e\u0440\u043a\u0430 \u0431\u044b\u043b\u0430 \u043d\u0430 4 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0445 \u0432\u043e\u0440\u043a\u0435\u0440\u0430\u0445, <code>maintenance_work_mem<\/code> 2 \u0413\u0411 \u043f\u043e \u0442\u0440\u0451\u043c \u043f\u0440\u043e\u0433\u043e\u043d\u0430\u043c \u0442\u0435\u0441\u0442\u043e\u0432.<\/p>\n<p>\u041f\u043e\u0438\u0441\u043a \u0434\u0435\u0441\u044f\u0442\u0438 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0445, \u043c\u0435\u0434\u0438\u0430\u043d\u0430 \u043f\u043e 20 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c \u0438 recall@10:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\n<\/th>\n<th>\n<p align=\"left\">\u0411\u0435\u0437 \u0444\u0438\u043b\u044c\u0442\u0440\u0430<\/p>\n<\/th>\n<th>\n<p align=\"left\">summary (13 \u0442\u044b\u0441. \u0441\u0442\u0440\u043e\u043a)<\/p>\n<\/th>\n<th>\n<p align=\"left\">opinion (17 \u0442\u044b\u0441.)<\/p>\n<\/th>\n<th>\n<p align=\"left\">negative (6 \u0442\u044b\u0441.)<\/p>\n<\/th>\n<th>\n<p align=\"left\">fiction (252)<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0445\u0430\u0431 &#8212; \u043c\u0430\u0441\u0441\u0438\u0432 (1,7 \u0442\u044b\u0441.)<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">pgvector HNSW<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,3 \u043c\u0441 \u00b7 0,95<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,3 \u043c\u0441 \u00b7 0,27<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,3 \u043c\u0441 \u00b7 0,31<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,3 \u043c\u0441 \u00b7 0,09<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,7 \u043c\u0441 \u00b7 1,00<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,3 \u043c\u0441 \u00b7 0,11<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">pgvector HNSW, iterative scan<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,4 \u043c\u0441 \u00b7 0,95<\/p>\n<\/td>\n<td>\n<p align=\"left\">1,9 \u043c\u0441 \u00b7 0,98<\/p>\n<\/td>\n<td>\n<p align=\"left\">1,5 \u043c\u0441 \u00b7 0,96<\/p>\n<\/td>\n<td>\n<p align=\"left\">7,6 \u043c\u0441 \u00b7 0,95<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,7 \u043c\u0441 \u00b7 1,00<\/p>\n<\/td>\n<td>\n<p align=\"left\">15,5 \u043c\u0441 \u00b7 0,89<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Lance IVF_HNSW_SQ<\/p>\n<\/td>\n<td>\n<p align=\"left\">1,1 \u043c\u0441 \u00b7 0,94<\/p>\n<\/td>\n<td>\n<p align=\"left\">1,5 \u043c\u0441 \u00b7 0,99<\/p>\n<\/td>\n<td>\n<p align=\"left\">1,4 \u043c\u0441 \u00b7 0,97<\/p>\n<\/td>\n<td>\n<p align=\"left\">1,4 \u043c\u0441 \u00b7 0,95<\/p>\n<\/td>\n<td>\n<p align=\"left\">1,2 \u043c\u0441 \u00b7 0,94<\/p>\n<\/td>\n<td>\n<p align=\"left\">2,2 \u043c\u0441 \u00b7 0,17<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Lance, \u0432\u0441\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u044b, refine 10<\/p>\n<\/td>\n<td>\n<p align=\"left\">2,5 \u043c\u0441 \u00b7 1,00<\/p>\n<\/td>\n<td>\n<p align=\"left\">3,7 \u043c\u0441 \u00b7 1,00<\/p>\n<\/td>\n<td>\n<p align=\"left\">4,8 \u043c\u0441 \u00b7 1,00<\/p>\n<\/td>\n<td>\n<p align=\"left\">3,8 \u043c\u0441 \u00b7 1,00<\/p>\n<\/td>\n<td>\n<p align=\"left\">2,3 \u043c\u0441 \u00b7 1,00<\/p>\n<\/td>\n<td>\n<p align=\"left\">10,0 \u043c\u0441 \u00b7 0,16<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435:<\/p>\n<ol>\n<li>\n<p>\u041d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445 \u0431\u0435\u0437 \u0444\u0438\u043b\u044c\u0442\u0440\u0430 pgvector \u0431\u044b\u0441\u0442\u0440\u0435\u0435. HNSW \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 0,3 \u043c\u0441, Lance &#8212; \u0437\u0430 1-2.5 \u043c\u0441: \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0441\u043a\u0430\u043d\u0430 Lance \u043e\u043a\u043e\u043b\u043e \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u044b.<\/p>\n<\/li>\n<li>\n<p>\u0421 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u043c HNSW \u0442\u0435\u0440\u044f\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b. \u041d\u0430 \u0444\u0438\u043b\u044c\u0442\u0440\u0435 \u043f\u043e \u043f\u043e\u043b\u044e <code>summary<\/code> \u043e\u043d \u043d\u0430\u0445\u043e\u0434\u0438\u0442 27 % \u0442\u043e\u0447\u043d\u044b\u0445 \u0441\u043e\u0441\u0435\u0434\u0435\u0439, \u043d\u0430 <code>negative<\/code> &#8212; 9 %, \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u043d\u043e\u043b\u044c \u0441\u0442\u0440\u043e\u043a \u0432\u043c\u0435\u0441\u0442\u043e \u0434\u0435\u0441\u044f\u0442\u0438. \u0415\u0441\u043b\u0438 \u043f\u043e\u0434\u043d\u044f\u0442\u044c <code>ef_search<\/code> \u0434\u043e 200 \u0438 \u044d\u0442\u043e \u043d\u0435 \u0441\u043f\u0430\u0441\u0430\u0435\u0442. \u041f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 iterative scan \u0438\u0437 pgvector 0.8: recall 0,89-0,98, \u043d\u043e \u043f\u043e\u0438\u0441\u043a \u0434\u043e\u0440\u043e\u0436\u0430\u0435\u0442 \u0434\u043e 7-15 \u043c\u0441, \u0430 p95 \u0434\u043e\u0445\u043e\u0434\u0438\u0442 \u0434\u043e 25 \u043c\u0441. \u041d\u0430 \u0441\u0430\u043c\u044b\u0445 \u0440\u0435\u0434\u043a\u0438\u0445 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0445 (NSFW, fiction) \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0441\u0430\u043c \u0443\u0445\u043e\u0434\u0438\u0442 \u043e\u0442 HNSW \u043a B-\u0434\u0435\u0440\u0435\u0432\u0443 \u0438 \u0442\u043e\u0447\u043d\u043e\u0439 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0435.<\/p>\n<\/li>\n<li>\n<p>Lance \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u0442\u0434\u0430\u0451\u0442 \u0447\u0442\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u043b. \u0424\u0438\u043b\u044c\u0442\u0440 \u0443\u0436\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0451\u043d, \u0438 \u043f\u043e\u0438\u0441\u043a \u0438\u0434\u0451\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0440\u0435\u0434\u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432. \u0421 \u043e\u043f\u0440\u043e\u0441\u043e\u043c \u0432\u0441\u0435\u0445 16 \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u0438 \u0443\u0442\u043e\u0447\u043d\u0435\u043d\u0438\u0435\u043c \u043f\u043e \u043f\u043e\u043b\u043d\u044b\u043c \u0432\u0435\u043a\u0442\u043e\u0440\u0430\u043c (<code>lance.nprobes = 16<\/code>, <code>lance.refine_factor = 10<\/code>) recall \u0440\u0430\u0432\u0435\u043d 1,00 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u0435 \u0437\u0430 2\u20136 \u043c\u0441. \u0421 \u044d\u0442\u0438\u043c\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u0438\u0449\u0435\u0442 \u0438 \u0430\u0433\u0435\u043d\u0442.<\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u0438 \u0442\u043e\u0447\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a. \u0411\u0435\u0437 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0430, \u043d\u0430 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0445 \u0441\u0440\u0435\u0434\u043d\u0435\u0439 \u0441\u0435\u043b\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 (opinion, negative), Lance \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u0434\u0435\u0441\u044f\u0442\u044c \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0445 \u0432 2-2.5 \u0440\u0430\u0437\u0430 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0442\u043e\u0447\u043d\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u043e heap: \u043e\u043d \u0447\u0438\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0443\u0436\u043d\u044b\u0435 \u043a\u043e\u043b\u043e\u043d\u043a\u0438. \u0411\u0435\u0437 \u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u043d\u0430 15% \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435.<\/p>\n<\/li>\n<li>\n<p>Lance \u043d\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u0442 \u043f\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u043c. \u0423\u0441\u043b\u043e\u0432\u0438\u0435 <code>hubs @&gt; ARRAY['PostgreSQL']<\/code> \u043d\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0438 Lance \u0431\u0435\u0440\u0451\u0442 100 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0445 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432, PostgreSQL \u0438\u0445 \u0444\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u0442, \u0438 recall \u043f\u0430\u0434\u0430\u0435\u0442 \u0434\u043e 0,16, \u0438\u043d\u043e\u0433\u0434\u0430 \u0434\u043e \u043d\u0443\u043b\u044f \u0441\u0442\u0440\u043e\u043a.<\/p>\n<\/li>\n<li>\n<p>\u0424\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 <code>nprobes = 4<\/code> \u0445\u0443\u0436\u0435 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0432\u044b\u0431\u043e\u0440\u0430 \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 Lance \u0434\u0435\u043b\u0430\u0435\u0442 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: recall 0,39-0,64, \u0430 \u0441 \u0440\u0435\u0434\u043a\u0438\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u043c \u0438\u043d\u043e\u0433\u0434\u0430 \u043c\u0435\u043d\u044c\u0448\u0435 \u0434\u0435\u0441\u044f\u0442\u0438 \u0441\u0442\u0440\u043e\u043a. IVF_PQ \u0441\u0436\u0438\u043c\u0430\u0435\u0442 \u0438\u043d\u0434\u0435\u043a\u0441 \u0434\u043e 9 \u041c\u0411, \u043d\u043e \u0438 \u0441 \u0443\u0442\u043e\u0447\u043d\u0435\u043d\u0438\u0435\u043c \u0434\u0430\u0451\u0442 recall \u043b\u0438\u0448\u044c 0,39\u20130,87.<\/p>\n<\/li>\n<\/ol>\n<p>Lance \u0432\u044b\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u0442 \u0438 \u0432 \u043e\u0431\u044a\u0451\u043c\u0435: \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u043d\u0430 \u0442\u0440\u0435\u0442\u044c \u043c\u0435\u043d\u044c\u0448\u0435, \u0438\u043d\u0434\u0435\u043a\u0441 IVF_HNSW_SQ \u0432 4 \u0440\u0430\u0437\u0430 \u043c\u0435\u043d\u044c\u0448\u0435 HNSW \u0438 \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u0432 7-11 \u0440\u0430\u0437 \u0431\u044b\u0441\u0442\u0440\u0435\u0435.<\/p>\n<p>\u041a \u043a\u043e\u0440\u043f\u0443\u0441\u0443 \u0434\u043b\u044f \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430 \u0430\u0433\u0435\u043d\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 <code>semantic_search(query, where, k)<\/code>. MCP-\u0441\u0435\u0440\u0432\u0435\u0440 \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0432\u0435\u043a\u0442\u043e\u0440 <code>query<\/code> \u0442\u043e\u0439 \u0436\u0435 \u043c\u043e\u0434\u0435\u043b\u044c\u044e \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 ollama \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441:<\/p>\n<pre><code class=\"sql\">SELECT task_id, habr_id, title, embedding_name, index, text, embedding_vector &lt;=&gt; $1 AS distanceFROM text_embeddingsWHERE &lt;\u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0430\u0433\u0435\u043d\u0442\u0430&gt;ORDER BY embedding_vector &lt;=&gt; $1LIMIT k;<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0423\u0441\u043b\u043e\u0432\u0438\u044f <code>corpus_sql<\/code> &#8212; \u0442\u043e\u043b\u044c\u043a\u043e SQL \u043f\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c \u043a\u043e\u0440\u043f\u0443\u0441\u0430, <code>vector<\/code> &#8212; \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0438\u0441\u043a \u043f\u043e \u0441\u043c\u044b\u0441\u043b\u0443, <code>vector_sql<\/code> &#8212; \u043e\u0431\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430. \u0412\u043e\u043f\u0440\u043e\u0441\u043e\u0432 12: \u043f\u044f\u0442\u044c \u043e \u0441\u0442\u0430\u0442\u044c\u044f\u0445 \u043f\u043e \u0441\u043c\u044b\u0441\u043b\u0443 (\u201c\u0412 \u043a\u0430\u043a\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0430\u0432\u0442\u043e\u0440 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u043b \u0442\u0435\u043b\u0435\u0436\u043a\u0443 \u043d\u0430 \u043f\u0435\u0434\u0430\u043b\u044c\u043d\u043e\u043c \u0445\u043e\u0434\u0443, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0435\u0445\u0430\u0442\u044c \u043d\u0430 \u043d\u0435\u0439 \u043f\u043e \u0441\u0442\u0430\u0440\u043e\u0439 \u0436\u0435\u043b\u0435\u0437\u043d\u043e\u0439 \u0434\u043e\u0440\u043e\u0433\u0435 \u0432\u0434\u043e\u043b\u044c \u0411\u0430\u0439\u043a\u0430\u043b\u0430?\u201d), \u0442\u0440\u0438 \u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 (\u043f\u043e\u0434\u0441\u0447\u0451\u0442\u044b, \u0441\u0430\u043c\u0430\u044f \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f), \u0434\u0432\u0430 \u043e \u043f\u043e\u043b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438, \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u043e\u0439 \u043f\u043e \u0441\u043c\u044b\u0441\u043b\u0443, \u0438 \u0434\u0432\u0430 \u0431\u0435\u0437 \u043e\u0442\u0432\u0435\u0442\u0430 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438. \u041e\u0442\u0432\u0435\u0447\u0430\u043b DeepSeek V4.1 Flash, \u043f\u043e \u0442\u0440\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u0430: 108 \u043f\u0440\u043e\u0433\u043e\u043d\u043e\u0432 \u0437\u0430 $0.13.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0412\u043e\u043f\u0440\u043e\u0441\u044b<\/p>\n<\/th>\n<th>\n<p align=\"left\">corpus_sql<\/p>\n<\/th>\n<th>\n<p align=\"left\">vector<\/p>\n<\/th>\n<th>\n<p align=\"left\">vector_sql<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041f\u043e \u0441\u043c\u044b\u0441\u043b\u0443<\/p>\n<\/td>\n<td>\n<p align=\"left\">14\/15<\/p>\n<\/td>\n<td>\n<p align=\"left\">15\/15<\/p>\n<\/td>\n<td>\n<p align=\"left\">15\/15<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438<\/p>\n<\/td>\n<td>\n<p align=\"left\">6\/9<\/p>\n<\/td>\n<td>\n<p align=\"left\">4\/9<\/p>\n<\/td>\n<td>\n<p align=\"left\">8\/9<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041f\u043e\u043b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438, \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u043e\u0439 \u043f\u043e \u0441\u043c\u044b\u0441\u043b\u0443<\/p>\n<\/td>\n<td>\n<p align=\"left\">5\/6<\/p>\n<\/td>\n<td>\n<p align=\"left\">0\/6<\/p>\n<\/td>\n<td>\n<p align=\"left\">6\/6<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0411\u0435\u0437 \u043e\u0442\u0432\u0435\u0442\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">6\/6<\/p>\n<\/td>\n<td>\n<p align=\"left\">6\/6<\/p>\n<\/td>\n<td>\n<p align=\"left\">6\/6<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong>\u0412\u0441\u0435\u0433\u043e<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>31\/36<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>25\/36<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>35\/36<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">$ \u0437\u0430 \u043f\u0440\u043e\u0433\u043e\u043d<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,00063<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,0024<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,00055<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041c\u0435\u0434\u0438\u0430\u043d\u0430, \u0441<\/p>\n<\/td>\n<td>\n<p align=\"left\">15<\/p>\n<\/td>\n<td>\n<p align=\"left\">28<\/p>\n<\/td>\n<td>\n<p align=\"left\">12<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<ul>\n<li>\n<p>\u041f\u043e \u0441\u043c\u044b\u0441\u043b\u0443 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u043d\u0435 \u043e\u0448\u0438\u0431\u0441\u044f \u043d\u0438 \u0440\u0430\u0437\u0443. SQL \u0442\u043e\u0436\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u0441\u0442\u0430\u0442\u044c\u0438, \u043f\u043e \u0441\u043b\u043e\u0432\u0430\u043c, \u0438 \u043e\u0448\u0438\u0431\u0441\u044f \u043d\u0430 \u0441\u043f\u043e\u0440\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435: \u043d\u043e\u0432\u043e\u0441\u0442\u044c \u043e GoDaddy \u0430\u0433\u0435\u043d\u0442 \u043d\u0430\u0448\u0451\u043b, \u043d\u043e \u0440\u0430\u0441\u0441\u0443\u0434\u0438\u043b, \u0447\u0442\u043e GoDaddy &#8212; \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440 \u0434\u043e\u043c\u0435\u043d\u043e\u0432, \u0430 \u043d\u0435 \u0445\u043e\u0441\u0442\u0438\u043d\u0433-\u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440, \u0438 \u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0432 \u043e\u0442\u0432\u0435\u0442\u0435 \u043e\u0434\u0438\u043d Hetzner.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f. \u041f\u043e\u0438\u0441\u043a \u043e\u0442\u0434\u0430\u0451\u0442 k \u0442\u0435\u043a\u0441\u0442\u043e\u0432, \u0430 \u043d\u0435 \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u044b. \u0427\u0438\u0441\u043b\u043e \u0445\u0443\u0434\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0441\u0442\u0430\u0442\u0435\u0439 \u0430\u0433\u0435\u043d\u0442 \u0431\u0435\u0437 SQL \u0432\u0441\u0451 \u0436\u0435 \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u043b. \u041e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u043b \u0436\u0430\u043d\u0440 \u0438 \u043f\u043e\u043b\u0435 <code>summary<\/code>  \u043f\u043e \u0441\u0442\u0440\u043e\u043a\u0435 \u043d\u0430 \u0441\u0442\u0430\u0442\u044c\u044e \u0438 \u043f\u0435\u0440\u0435\u0441\u0447\u0438\u0442\u0430\u043b 23 \u0441\u0442\u0440\u043e\u043a\u0438. \u0410 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 \u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430\u0445 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043e\u043d \u0447\u0435\u0441\u0442\u043d\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u043b \u201c\u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u0442\u201d. \u041d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 \u043e \u0441\u0430\u043c\u043e\u0439 \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043e\u043d \u0442\u0440\u0438\u0436\u0434\u044b \u043d\u0430\u0437\u0432\u0430\u043b \u043d\u0435 \u0442\u0443, \u0434\u0432\u0430\u0436\u0434\u044b &#8212; \u201c\u0418\u0442\u043e\u0433\u0438 2022 \u0433\u043e\u0434\u0430 \u043d\u0430 \u0425\u0430\u0431\u0440\u0435\u201d: \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u043e\u0432 \u0443 \u043f\u043e\u0438\u0441\u043a\u0430 \u043d\u0435\u0442, \u0438 \u0430\u0433\u0435\u043d\u0442 \u0432\u044b\u0431\u0438\u0440\u0430\u043b \u043f\u043e \u0441\u043c\u044b\u0441\u043b\u0443.<\/p>\n<\/li>\n<li>\n<p>\u0421 \u0434\u0432\u0443\u043c\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0430\u0433\u0435\u043d\u0442 \u043e\u0448\u0438\u0431\u0441\u044f \u043e\u0434\u0438\u043d \u0440\u0430\u0437, \u0438 \u0442\u043e \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435. \u0427\u0438\u0441\u0442\u044b\u0439 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u043e\u0431\u043e\u0448\u0451\u043b\u0441\u044f \u0432\u0447\u0435\u0442\u0432\u0435\u0440\u043e \u0434\u043e\u0440\u043e\u0436\u0435: \u0430\u0433\u0435\u043d\u0442 \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u043b \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u043f\u043e\u0438\u0441\u043a\u0430 &#8212; \u044d\u0442\u043e 10\u201350 \u0442\u0435\u043a\u0441\u0442\u043e\u0432 \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0434\u0438\u0430\u043b\u043e\u0433\u0430.<\/p>\n<\/li>\n<\/ul>\n<h2>DeepSeek \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b SQL-\u0438\u043d\u044a\u0435\u043a\u0446\u0438\u044e \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441<\/h2>\n<p>\u041a\u043e\u043d\u0435\u0447\u043d\u043e \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u0431\u044b\u043b \u0441\u043e\u0431\u0440\u0430\u043d \u043a\u0430\u043a \u0438 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043e \u201c\u043d\u0430 \u043a\u043e\u043b\u0435\u043d\u043a\u0435\u201d \u0438 \u0435\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 semantic_search \u0438\u043c\u0435\u0435\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 where \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0430\u0433\u0435\u043d\u0442 \u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u043d\u0430 SQL. \u0427\u0435\u043c \u043d\u0435 \u043f\u0440\u0435\u043c\u0438\u043d\u0443\u043b \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f DeepSeek V4.1 Flash. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u0434\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c:<\/p>\n<pre><code class=\"sql\">task_id IN (SELECT task_id FROM indexed_text ORDER BY reading_count DESC LIMIT 1)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0410 \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u043e\u0441\u044c \u0441\u0430\u043c\u043e \u0447\u0438\u0441\u043b\u043e \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u0439 \u0441\u0442\u0430\u0442\u044c\u0438, \u043e\u043d \u0441\u043e\u043e\u0440\u0443\u0434\u0438\u043b \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0443\u044e SQL-\u0438\u043d\u044a\u0435\u043a\u0446\u0438\u044e.<\/p>\n<pre><code class=\"sql\">habr_id = 757486 AND (SELECT ('views=' || reading_count)::int FROM indexed_text WHERE habr_id = 757486) &gt; 0<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0413\u0434\u0435 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043b \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u044b \u0447\u0435\u0440\u0435\u0437 \u0442\u0435\u043a\u0441\u0442 \u043e\u0448\u0438\u0431\u043a\u0438.<\/p>\n<pre><code>ERROR: invalid input syntax for type integer: \"views=5623\"<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u042d\u0442\u043e \u0431\u044b\u043b \u0437\u0430\u043f\u0440\u043e\u0441 \u0441 \u043f\u043e\u0434\u0432\u043e\u0445\u043e\u043c, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443 \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0435 \u043c\u043e\u0433\u043b\u043e \u0431\u044b\u0442\u044c \u0442\u043e\u0447\u043d\u043e\u0433\u043e \u043e\u0442\u0432\u0435\u0442\u0430. \u041d\u0430 \u044d\u0442\u043e\u043c \u0438 \u0431\u044b\u043b \u043f\u043e\u0439\u043c\u0430\u043d! \u0417\u0430\u043f\u0438\u0441\u044c \u043f\u0440\u0435\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f LLM \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043b\u0430\u0441\u044c <a href=\"https:\/\/raw.githubusercontent.com\/igor-suhorukov\/jgraph_rag\/refs\/heads\/main\/results\/corpus-1.ru.jsonl\" rel=\"noopener nofollow\">\u0432 \u043b\u043e\u0433\u0435<\/a> \u0438\u0449\u0435\u0442\u0441\u044f \u043f\u043e \u2018views=\u2019 || reading_count . \u0414\u044b\u0440\u0443 \u0432 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0435 \u0437\u0430\u043b\u0430\u0442\u0430\u043b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0440\u043e\u043b\u044c\u044e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0438\u0447\u0435\u0433\u043e \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0438 \u043f\u043e\u043a\u0440\u044b\u043b \u0442\u0435\u0441\u0442\u0430\u043c\u0438, \u0447\u0442\u043e\u0431\u044b \u043d\u0435\u043f\u043e\u0432\u0430\u0434\u043d\u043e \u0431\u044b\u043b\u043e \u0441\u043e\u043e\u0440\u0443\u0436\u0430\u0442\u044c \u0438\u043d\u044a\u0435\u043a\u0446\u0438\u0438.<\/p>\n<h2>\u0418\u0442\u043e\u0433\u0438<\/h2>\n<p>\u042f \u0436\u0434\u0430\u043b \u0447\u0442\u043e \u0432\u044b\u0438\u0433\u0440\u0430\u0435\u0442 SPARQL \u043d\u043e \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e, SQL \u043f\u043e\u0431\u0435\u0434\u0438\u043b &#8212; \u0432\u0441\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u043b\u0438 \u0435\u0433\u043e \u0447\u0430\u0449\u0435. \u041e\u0448\u0438\u0431\u043e\u043a \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445 \u043d\u0430 \u043d\u0435\u043c \u0431\u044b\u043b\u043e \u0443 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0432 2-3 \u0440\u0430\u0437\u0430 \u0431\u043e\u043b\u044c\u0448\u0435, \u0430 \u0432 \u043e\u0434\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u043d \u043e\u0431\u043e\u0448\u0435\u043b\u0441\u044f \u0432 1.6-2.5 \u0440\u0430\u0437\u0430 \u0434\u043e\u0440\u043e\u0436\u0435 SQL \u0432 $. \u0421 \u0434\u0432\u0443\u043c\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u043d\u0430 \u0432\u044b\u0431\u043e\u0440 \u043c\u043e\u0434\u0435\u043b\u0438 \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u0447\u0430\u0449\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u043b\u0438 SQL \u0432 135 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0445 \u0438\u0437 135, \u0434\u0430\u0436\u0435 \u043a\u043e\u0433\u0434\u0430 SPARQL \u0441\u0442\u043e\u044f\u043b \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u0435\u0440\u0432\u044b\u043c.<\/p>\n<p>\u0412\u0435\u0441\u044c \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442 \u043e\u0431\u043e\u0448\u0435\u043b\u0441\u044f \u043c\u043d\u0435 \u0432 12.80$ \u043d\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0445 \u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u0432 OpenRouter. \u0418 \u043c\u043e\u0438 \u0432\u044b\u0432\u043e\u0434\u044b \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432:<\/p>\n<ul>\n<li>\n<p>\u0410\u0433\u0435\u043d\u0442\u0443 \u0434\u043b\u044f \u043f\u0430\u043c\u044f\u0442\u0438 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0445\u043e\u0440\u043e\u0448\u043e \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0445\u0435\u043c\u044b \u0441 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u043c\u0438 \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445 \u0438 \u043a\u043e\u043b\u043e\u043d\u043a\u0430\u0445.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u0432\u043e\u0434\u0438\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0431\u0430\u0437\u0443 \u043f\u043e\u0434 \u0433\u0440\u0430\u0444 \u0437\u043d\u0430\u043d\u0438\u0439. R2RML \u043d\u0430 PostgreSQL \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0438\u0445 \u0432 \u0433\u0440\u0430\u0444 \u0434\u043b\u044f SPARQL-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/github.com\/igor-suhorukov\/pg_knowledge_base\" rel=\"noopener nofollow\">pg_knowledge_base<\/a> \u0438 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0434\u043b\u044f \u043a\u0432\u0430\u0434\u043e\u0432, \u0432\u0441\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0442\u0430\u043c \u0436\u0435 \u0433\u0434\u0435 \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439 \u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0412\u0441\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u0440\u0438\u0433\u043e\u0434\u043d\u044b \u0434\u043b\u044f \u043e\u0442\u0432\u0435\u0442\u043e\u0432 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0438 \u043f\u043e\u0438\u0441\u043a\u0430 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438. DeepSeek V4.1 Flash \u043e\u0442\u0432\u0435\u0442\u0438\u043b \u0432\u0435\u0440\u043d\u043e \u043d\u0430 \u0432\u0441\u0435 270 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432, Qwen 3.8 27B \u043d\u0430 98%, Gemma 4 31B \u043d\u0430 97%. \u042d\u0442\u043e \u0442\u0435 \u043c\u043e\u0434\u0435\u043b\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0443 \u0441\u0435\u0431\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e! \u042f \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0438 Sonnet 5.5 \u0441\u0442\u043e\u0438\u043b \u043e\u043d \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u0440\u043e\u0436\u0435 \u0438 \u0432 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0435 \u043d\u0435 \u0434\u0430\u0432\u0430\u043b \u043e\u0441\u043e\u0431\u044b\u0445 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432.<\/p>\n<\/li>\n<li>\n<p>\u0414\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0441 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u043c\u0438 \u043f\u043e \u043f\u043e\u043b\u044f\u043c Lance \u0443\u0434\u043e\u0431\u043d\u0435\u0435 pgvector. Lance \u0444\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u0442 \u0434\u043e \u043f\u043e\u0438\u0441\u043a\u0430 \u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u0442\u0434\u0430\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0448\u0435\u043d\u043d\u044b\u0435 k \u0441\u0442\u0440\u043e\u043a, \u0430 pgvector HNSW \u0431\u0435\u0437 iterative scan \u0441 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u043c \u0442\u0435\u0440\u044f\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b. \u0422\u0430\u0431\u043b\u0438\u0446\u0430 Lance \u043f\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0443 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0442\u0440\u0435\u0442\u044c \u043c\u0435\u043d\u044c\u0448\u0435, \u0435\u0435 \u0438\u043d\u0434\u0435\u043a\u0441 \u0432 4 \u0440\u0430\u0437\u0430 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u0435\u0435 \u0438 \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u0432 7-11 \u0440\u0430\u0437 \u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u041d\u043e Lance \u043d\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043f\u043e\u043a\u0430 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044e \u043f\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u043c. \u0411\u0435\u0437 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 pgvector.<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u0432\u0438\u0436\u043e\u043a SPARQL \u0434\u043b\u044f \u0442\u0430\u0431\u043b\u0438\u0446 PostgreSQL \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432 <a href=\"https:\/\/github.com\/igor-suhorukov\/pg_knowledge_base\" rel=\"noopener nofollow\">pg_knowledge_base<\/a>, \u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u044b Lance \u0437\u0434\u0435\u0441\u044c <a href=\"https:\/\/github.com\/igor-suhorukov\/pg_lance_tam\" rel=\"noopener nofollow\">pg_lance_tam<\/a>.<\/p>\n<\/div>\n<p>\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\/1100348\/\">https:\/\/habr.com\/ru\/articles\/1100348\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041f\u0430\u043c\u044f\u0442\u044c \u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u0432 \u0442\u0440\u0435\u043d\u0434\u0435 \u0441 \u0442\u043e\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043a\u0430\u043a \u043e\u043d\u0438 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c, \u0447\u0442\u043e\u0431\u044b \u0431\u043e\u0440\u043e\u0442\u044c\u0441\u044f \u0441 \u0433\u0430\u043b\u043b\u044e\u0446\u0438\u043d\u0430\u0446\u0438\u044f\u043c\u0438 \u0438 \u0434\u0430\u0432\u0430\u0442\u044c \u043e\u0442\u0432\u0435\u0442\u044b \u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f LLM \u043d\u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438. \u041a\u0430\u043a \u043b\u0443\u0447\u0448\u0435 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0438\u0437 \u0442\u0430\u0431\u043b\u0438\u0446 \u0438\u043b\u0438 \u0438\u0437 \u0433\u0440\u0430\u0444\u0430 \u0447\u0430\u0441\u0442\u043e \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0432\u0435\u0440\u0435, \u043d\u0430\u0447\u0438\u0442\u0430\u0432\u0448\u0438\u0441\u044c \u043f\u043e\u0441\u0442\u043e\u0432 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u0431\u0435\u0437 \u0441\u0432\u043e\u0438\u0445 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439.  \u0412 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0438 Sequeda \u0438 \u0441\u043e\u0430\u0432\u0442\u043e\u0440\u043e\u0432 GPT-4 \u043e\u0442\u0432\u0435\u0447\u0430\u043b \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043f\u043e \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 SQL-\u0431\u0430\u0437\u0435 \u0432\u0435\u0440\u043d\u043e \u0432 16% \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u0430 \u043f\u043e \u0433\u0440\u0430\u0444\u0443 \u0437\u043d\u0430\u043d\u0438\u0439 \u043f\u043e\u0432\u0435\u0440\u0445 \u044d\u0442\u043e\u0439 \u0436\u0435 \u0431\u0430\u0437\u044b \u0432 54%, \u0433\u0434\u0435 \u0443 \u0433\u0440\u0430\u0444\u0430 \u0431\u044b\u043b\u0430 \u043e\u043d\u0442\u043e\u043b\u043e\u0433\u0438\u044f \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c, \u0430 \u0443 SQL-\u0441\u0445\u0435\u043c\u044b \u0442\u043e\u043b\u044c\u043a\u043e DDL \u0442\u0438\u043f\u044b \u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0442\u0430\u0431\u043b\u0438\u0446\/\u043a\u043e\u043b\u043e\u043d\u043e\u043a.\u0412 \u043c\u043e\u0435\u043c GraphRAG \u043e\u0434\u043d\u0430 \u0438 \u0442\u0430 \u0436\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0432 \u0434\u0432\u0443\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u0444\u043e\u0440\u043c\u0430\u0445. \u0414\u0430\u043d\u043d\u044b\u0435 \u0438\u0437  \u0441\u0442\u0430\u0442\u044c\u0438 \u201c\u041c\u043e\u0439 PostgreSQL \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0442\u0432\u043e\u0435\u0433\u043e \u0438 \u043f\u043e\u0447\u0442\u0438 \u0434\u043e\u0433\u043d\u0430\u043b ClickHouse\u201d \u0438\u0437\u0432\u043b\u0435\u043a \u0432 34 \u0442\u0430\u0431\u043b\u0438\u0446\u044b PostgreSQL, \u0430 \u0432 \u0433\u0440\u0430\u0444 \u044d\u0442\u043e \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f R2RML. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043b \u043e\u0431\u0435 \u0444\u043e\u0440\u043c\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u043d\u0438\u0439 \u043a \u0430\u0433\u0435\u043d\u0442\u0443 \u043f\u043e MCP \u0438 \u0437\u0430\u0434\u0430\u043b \u0435\u043c\u0443 15 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u043e \u0441\u0442\u0430\u0442\u044c\u0435: \u0447\u0435\u0440\u0435\u0437 SQL, \u0447\u0435\u0440\u0435\u0437 SPARQL \u0438 \u0434\u0430\u043b \u0435\u0449\u0435 \u0432\u044b\u0431\u043e\u0440 \u0430\u0433\u0435\u043d\u0442\u0443 \u0438\u0437 \u0434\u0432\u0443\u0445 \u044d\u0442\u0438\u0445 \u0432\u0438\u0434\u043e\u0432 \u0441\u0440\u0430\u0437\u0443. \u0412 \u043c\u043e\u0435\u043c \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0435 \u0430\u0433\u0435\u043d\u0442 \u043f\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0441\u044f \u043d\u0430 \u0442\u0440\u0435\u0445 LLM \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c\u0438 \u0432\u0435\u0441\u0430\u043c\u0438. \u0418\u0445 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043d\u0430 \u0441\u0432\u043e\u0435\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u0438\u043b\u0438 \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0435 \u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043d\u0435 \u0443\u0439\u0434\u0443\u0442 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0443 \u0432 \u043b\u043e\u0433\u0438 \u0438\u043b\u0438 \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440\u0443 \u043c\u0435\u0436\u0434\u0443 \u0432\u0430\u043c\u0438 \u0438 LLM.\u0422\u0430\u043a\u0436\u0435 \u044f \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u0438 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043b \u0447\u0442\u043e \u043b\u0443\u0447\u0448\u0435 \u0434\u043b\u044f \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430: Lance \u0438\u043b\u0438 pgvector. \u041f\u043e\u0434\u0435\u043b\u044e\u0441\u044c \u0441\u0432\u043e\u0438\u043c\u0438 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f\u043c\u0438 \u043d\u0430 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u044f\u0445 \u043a\u0430\u043a \u043b\u0443\u0447\u0448\u0435 \u0438\u0441\u043a\u0430\u0442\u044c \u0438 \u0432 \u0447\u0435\u043c \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0437\u043d\u0430\u043d\u0438\u044f.\u041e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u0432 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0435 \u043a\u0430\u043a DeepSeek \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b SQL-\u0438\u043d\u044a\u0435\u043a\u0446\u0438\u044e \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430 \u043c\u043e\u0439 \u0432\u043e\u043f\u0440\u043e\u0441.\u0414\u0432\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0434\u043d\u0438\u0445 \u0438 \u0442\u0435\u0445 \u0436\u0435 \u0434\u0430\u043d\u043d\u044b\u0445\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e LLM, NLP \u0438 \u043c\u043e\u0440\u0444\u043e\u043b\u043e\u0433\u0438\u0438 \u0438 \u043f\u0440\u043e\u0447\u0438\u0445 \u0441\u0442\u0440\u0430\u0448\u043d\u044b\u0445 \u0441\u043b\u043e\u0432 \u043c\u043e\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b\u0438\u0441\u044c \u0432 \u0433\u0440\u0430\u0444\u043e\u0432\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438 \u0444\u0440\u0435\u0439\u043c\u044b \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u043a RDF Quad. \u0421\u043b\u043e\u0432\u0430 \u0438\u0437 \u0442\u0435\u043a\u0441\u0442\u0430 \u0440\u0430\u0437\u043b\u043e\u0436\u0438\u043b\u0438\u0441\u044c \u043f\u043e \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044f\u043c, \u0442\u0435\u0437\u0438\u0441\u0430\u043c, \u0437\u0430\u043c\u0435\u0440\u0430\u043c, \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u043c \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c \u0438 \u0442. \u043f. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0430\u043a\u043e\u0433\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430 \u0435\u0441\u0442\u044c \u0435\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u0445 \u043f\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0443 W3C Web Annotation. \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u044b\u0439 \u0441\u043b\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u044b\u043b \u0432\u044b\u0432\u0435\u0434\u0435\u043d \u0443\u0436\u0435 \u043f\u043e\u0432\u0435\u0440\u0445 \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u043e\u0439. \u0412\u0441\u0435\u0433\u043e \u0432\u044b\u0448\u043b\u043e 10154 \u043a\u0432\u0430\u0434\u0430 \u0432 37 \u0433\u0440\u0430\u0444\u0430\u0445 \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438.\u0417\u0430\u0442\u0435\u043c \u044d\u0442\u043e \u0432\u0441\u0435 \u0440\u0430\u0437\u043b\u043e\u0436\u0438\u043b \u043f\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u0441\u0442\u0430\u043b\u043e \u043f\u0440\u043e\u0449\u0435 \u0434\u043b\u044f \u0432\u043e\u0441\u043f\u0440\u0438\u044f\u0442\u0438\u044f \u043d\u0430 \u0433\u043b\u0430\u0437. \u0423\u0437\u0435\u043b \u0433\u0440\u0430\u0444\u0430 \u0441\u0442\u0430\u043b \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u043a\u043e\u043b\u043e\u043d\u043a\u0430 &#8212; \u0435\u0433\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e\u043c, \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0442\u0430\u043b \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u043c \u0432 \u0441\u0442\u0440\u043e\u043a\u0435. \u0412 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u043a \u043a\u0430\u0436\u0434\u043e\u0439 \u043a\u043e\u043b\u043e\u043d\u043a\u0435 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043a\u0430\u043a\u043e\u0439 \u043f\u0440\u0435\u0434\u0438\u043a\u0430\u0442 RDF \u043e\u043d\u0430 \u0445\u0440\u0430\u043d\u0438\u0442. \u041c\u044d\u043f\u043f\u0438\u043d\u0433 R2RML \u043f\u043e \u044d\u0442\u0438\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c \u0441\u043d\u043e\u0432\u0430 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0433\u0440\u0430\u0444.\u0412 \u043f\u0430\u043c\u044f\u0442\u0438 \u0435\u0441\u0442\u044c \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u0438\u0437 \u0441\u0442\u0430\u0442\u044c\u0438. LLM \u0437\u0430\u043f\u0438\u0441\u0430\u043b\u0430 \u0438\u0445 \u043a\u0430\u043a BPMN \u0441\u043e\u0431\u044b\u0442\u0438\u044f, \u0437\u0430\u0434\u0430\u0447\u0438, \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0435 \u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u0435. \u0425\u0440\u0430\u043d\u0438\u0442\u0441\u044f 4 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430, 29 \u0448\u0430\u0433\u043e\u0432 \u0432 process_steps\/process_flows.\u0414\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u043b\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u044f\u0437\u044b\u043a\u0430\u0445, \u0441\u0434\u0435\u043b\u0430\u043b \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439 \u0438 \u043f\u0440\u043e\u0433\u043d\u0430\u043b \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u0438 \u043d\u0430 \u044d\u0442\u043e\u043c \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0435.\u041f\u0430\u043c\u044f\u0442\u044c \u0430\u0433\u0435\u043d\u0442\u0430\u042d\u0442\u043e Java \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043d\u0430 langchain4j \u0441 \u0446\u0438\u043a\u043b\u043e\u043c \u201c\u043c\u043e\u0434\u0435\u043b\u044c-&gt;\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b-&gt;\u043c\u043e\u0434\u0435\u043b\u044c\u201d \u0433\u0434\u0435 \u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 16 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 LLM \u0438 \u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 12 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043a \u043f\u0430\u043c\u044f\u0442\u0438. \u041f\u0430\u043c\u044f\u0442\u044c \u044d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 MCP-\u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0430 stdio \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0432 PostgreSQL. \u041f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0432 \u044d\u0442\u043e\u043c \u0446\u0438\u043a\u043b\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0442\u0440\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430:sql_query \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 SQL-\u0437\u0430\u043f\u0440\u043e\u0441 \u0432 \u0421\u0423\u0411\u0414 \u0441 \u0440\u043e\u043b\u044c\u044e agent_sqlsparql_query \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 SPARQL-\u0437\u0430\u043f\u0440\u043e\u0441 \u0432 \u0431\u0430\u0437\u0435 \u0441 \u0440\u043e\u043b\u044c\u044e agent_sparql. \u041f\u0440\u0435\u0444\u0438\u043a\u0441\u044b schema: kgo: oa: \u0443\u0436\u0435 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043a\u0430\u043a \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 SPARQL-\u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u0430\u0445.submit_answer \u043a\u043e\u0433\u0434\u0430 \u0430\u0433\u0435\u043d\u0442 \u0440\u0435\u0448\u0438\u043b \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c, \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0446\u0438\u0442\u0430\u0442\u0443 \u0441 \u043d\u043e\u043c\u0435\u0440\u0430\u043c\u0438 \u0441\u0442\u0440\u043e\u043a, \u0442\u0435\u043a\u0441\u0442 \u043e\u0442\u0432\u0435\u0442\u0430 \u0438\u043b\u0438 \u201c\u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u0442\u201d.\u041e\u0431\u0435 \u0440\u043e\u043b\u0438 \u0432 PostgreSQL \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0438\u0442\u0430\u044e\u0442 \u0434\u0430\u043d\u043d\u044b\u0435, \u0441 \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u043e\u043c \u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441 5 \u0441\u0435\u043a\u0443\u043d\u0434, \u043e\u0442\u0432\u0435\u0442 \u043e\u0431\u0440\u0435\u0437\u0430\u0435\u0442\u0441\u044f \u0434\u043e 200 \u0441\u0442\u0440\u043e\u043a \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043c\u043e\u0434\u0435\u043b\u0438. \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c \u043f\u0440\u043e\u043c\u043f\u0442\u0435 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0435 \u0432\u043e \u0432\u0441\u0435\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445: \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0438 \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u0441 \u043f\u0440\u0435\u0434\u0438\u043a\u0430\u0442\u0430\u043c\u0438 RDF. \u042d\u0442\u043e 45-53 \u0442\u044b\u0441\u044f\u0447\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0438\u043b\u0438 15-17 \u0442\u044b\u0441. \u0442\u043e\u043a\u0435\u043d\u043e\u0432. \u0423\u0441\u043b\u043e\u0432\u0438\u044f \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0439 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u043e\u0439 \u043a \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0438\u0437 \u043d\u0438\u0445.\u0412\u044b\u0437\u043e\u0432 \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 OpenAI \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b, \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b OpenRouter \u0438 \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u043e\u043f\u0430\u0441\u0442\u044c \u043d\u0430 \u0441\u0438\u043b\u044c\u043d\u043e \u043a\u0432\u0430\u043d\u0442\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0438\u043b\u0438 \u0434\u043e\u0440\u043e\u0433\u0438\u0435 \u043f\u0440\u043e\u0433\u043e\u043d\u044b \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u043a, \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u043b \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432 \u0438 \u0441\u0440\u0435\u0434\u043d\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0440\u0430\u0441\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0439.ChatModel model = OpenAiChatModel.builder()        .baseUrl(&#171;https:\/\/openrouter.ai\/api\/v1&#187;)        .apiKey(System.getenv(&#171;OPENROUTER_API_KEY&#187;))        .modelName(customModelName)        .customParameters(Map.of(                &#171;provider&#187;, Map.of(&#171;order&#187;, List.of(&#171;deepinfra\/fp8&#187;, &#171;nebius\/fp8&#187;),                        &#171;allow_fallbacks&#187;, false, &#171;require_parameters&#187;, true),                &#171;reasoning&#187;, Map.of(&#171;effort&#187;, &#171;medium&#187;)))        .returnThinking(true)        .sendThinking(true, &#171;reasoning&#187;)        .build();\u041c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u0438 \u043d\u0430 \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 vLLM\/ollama\/llama.cpp.\u041a \u043f\u0430\u043c\u044f\u0442\u0438 \u0430\u0433\u0435\u043d\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u043e MCP, \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043d\u0443\u0436\u043d\u044b\u0435 \u0432 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b:McpSyncServer server = McpServer.sync(new StdioServerTransportProvider(mapper))        .serverInfo(&#171;jgraph-rag-memory&#187;, &#171;0.1.0&#187;)        .capabilities(McpSchema.ServerCapabilities.builder().tools(false).build())        .toolCall(McpSchema.Tool.builder(&#171;sql_query&#187;, mapper, input).description(lang.sqlDescription()).build(),                (exchange, request) -&gt; memory.call(request, true))        .toolCall(McpSchema.Tool.builder(&#171;sparql_query&#187;, mapper, input).description(lang.sparqlDescription()).build(),                (exchange, request) -&gt; memory.call(request, false))        .build();Properties p = new Properties();p.setProperty(&#171;user&#187;, isSql ? &#171;agent_sql&#187; : &#171;agent_sparql&#187;);Connection c = DriverManager.getConnection(jdbcUrl, p);c.setReadOnly(true);try (PreparedStatement ps = c.prepareStatement(&#171;SELECT kb.sparql_json(?, ?)::text&#187;)) {    ps.setString(1, withPrefixes(query));    ps.setString(2, &#171;https:\/\/example.org\/story-kg\/id\/habr-1097022\/&#187;);    try (ResultSet rs = ps.executeQuery()) {        rs.next();        JsonNode result = json.readTree(rs.getString(1));    }}\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0446\u0438\u043a\u043b \u0430\u0433\u0435\u043d\u0442\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0432\u0441\u044e \u0441\u0432\u043e\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u0415\u0441\u043b\u0438 \u0430\u0433\u0435\u043d\u0442 \u0432\u044b\u0437\u0432\u0430\u043b submit_answer, \u0442\u043e \u0441\u0432\u043e\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u043e\u043d \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043b \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0441\u0434\u0430\u043b. \u041f\u0440\u0438 \u043e\u0448\u0438\u0431\u043a\u0435 \u0432 MCP \u0430\u0433\u0435\u043d\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0442\u0435\u043a\u0441\u0442 \u044d\u0442\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0438, \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u0438\u0434\u0438\u0442 \u0435\u0435 \u0438 \u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e:List&lt;ChatMessage&gt; messages = new ArrayList&lt;&gt;(List.of(SystemMessage.from(system), UserMessage.from(question)));for (int turn = 0; turn &lt; 16; turn++) {    ChatResponse response = model.chat(ChatRequest.builder()            .messages(messages).toolSpecifications(tools).build());    AiMessage ai = response.aiMessage();    messages.add(ai);    for (ToolExecutionRequest call : ai.toolExecutionRequests()) {        if (call.name().equals(&#171;submit_answer&#187;)) {            return fromArguments(call.arguments());        }    }    for (ToolExecutionRequest call : ai.toolExecutionRequests()) {        String text;        try {            text = memory.executeTool(call).resultText();        } catch (McpApplicationErrorException e) {            text = e.getMessage();        }        messages.add(ToolExecutionResultMessage.from(call, text));    }}OpenRouter \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u043e\u0442\u0432\u0435\u0442\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0435\u0433\u043e \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c, \u043a\u0430\u043a\u043e\u0439 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b \u0437\u0430\u043f\u0440\u043e\u0441, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0446\u0435\u043d\u044b \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0442\u043e\u0447\u043d\u044b\u0435, \u0430 \u043d\u0435 \u043e\u0446\u0435\u043d\u043a\u0430 \u043f\u043e \u0447\u0438\u0441\u043b\u0443 \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0438 \u043f\u0440\u0430\u0439\u0441\u0443.\u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u043e\u0434\u043d\u043e\u0433\u043e \u0438 \u0442\u043e\u0433\u043e \u0436\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0430  \u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u201c\u041d\u0430 \u043a\u0430\u043a\u0443\u044e \u0440\u0435\u043f\u043b\u0438\u043a\u0443 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440\u0430 \u0430\u0432\u0442\u043e\u0440 \u043e\u0442\u0432\u0435\u0442\u0438\u043b \u0441 \u0438\u0440\u043e\u043d\u0438\u0435\u0439?\u201d \u043d\u0430 SQL \u0438 SPARQL:SELECT t.id, t.textFROM quotations q JOIN quotations t ON t.id = q.stance_targetWHERE q.stance = &#8216;irony&#8217;;SELECT DISTINCT ?t ?text WHERE {  ?q kgo:stance &lt;https:\/\/example.org\/story-kg\/concept\/stance\/irony&gt; ;     kgo:stanceTarget ?t .  ?t schema:text ?text .}\u0418 \u0432 \u043e\u0442\u0432\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442 \u0440\u0435\u043f\u043b\u0438\u043a\u0443 \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u201c\u0422\u0430\u043a \u0432\u043e\u0437\u044c\u043c\u0438 \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435. \u0418\u0445 \u0434\u043b\u044f PostgreSQL \u0441 \u0434\u0435\u0441\u044f\u0442\u043e\u043a.\u201d\u042d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0414\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b 15 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u0441\u0435\u043c\u0438 \u0442\u0438\u043f\u043e\u0432. \u041a \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0435\u0441\u0442\u044c \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u0438 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 SQL \u0438 SPARQL. \u0422\u0435\u0441\u0442\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442, \u0447\u0442\u043e \u043e\u0431\u0430 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0434\u0430\u044e\u0442 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0431\u0430\u0437\u0430\u0445 \u043e\u0431\u043e\u0438\u0445 \u044f\u0437\u044b\u043a\u043e\u0432.\u0422\u0438\u043f\u0412\u043e\u043f\u0440\u043e\u0441F1\u0424\u0430\u043a\u0442\u0421\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u0431\u043c\u043e\u0434\u0443\u043b\u0435\u0439 ClickHouse \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0431\u0440\u0430\u0442\u044c MergeTree?F2\u0424\u0430\u043a\u0442\u0412 \u043a\u0430\u043a\u043e\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043b\u0435\u0436\u0438\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 iheap?R1\u0421\u0432\u044f\u0437\u044c\u041a\u0430\u043a\u0438\u0435 \u0421\u0423\u0411\u0414 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0432 \u043f\u0440\u043e\u0434\u0435 \u0443 \u0437\u043d\u0430\u043a\u043e\u043c\u043e\u0433\u043e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440\u0430 \u0430\u0432\u0442\u043e\u0440\u0430?R2\u0421\u0432\u044f\u0437\u044c\u0421 \u043a\u0430\u043a\u0438\u043c\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c pg_vexec?A1\u0410\u0433\u0440\u0435\u0433\u0430\u0442\u0421\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u043f\u043b\u0438\u043a \u0432 \u0441\u043f\u043e\u0440\u0435 \u0430\u0432\u0442\u043e\u0440\u0430 \u0441\u043e \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u043c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u043e\u0438\u0437\u043d\u0451\u0441 \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043d\u0438\u0445?A2\u0410\u0433\u0440\u0435\u0433\u0430\u0442\u0412 \u043a\u0430\u043a\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u043e\u0432 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439 \u0438 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u0445 \u0442\u0430\u043c?P1\u041f\u0443\u0442\u044c\u041a\u0430\u043a\u0438\u0435 \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0441\u0442\u0430\u0442\u044c\u0438 \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0442 \u0442\u0430\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 PostgreSQL?P2\u041f\u0443\u0442\u044c\u041a\u0430\u043a\u0438\u0435 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u043f\u0440\u044f\u043c\u043e \u0438\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 \u0446\u0435\u043f\u043e\u0447\u043a\u0443 \u0434\u043e\u0432\u043e\u0434\u043e\u0432 \u043f\u043e\u0434\u043a\u0440\u0435\u043f\u043b\u044f\u044e\u0442 \u0442\u0435\u0437\u0438\u0441 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0443\u0436\u0435\u043d \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0434\u0430\u043d\u043d\u044b\u0445, \u043e\u0442\u0434\u0430\u044e\u0449\u0438\u0439 \u043a\u043e\u043b\u043e\u043d\u043a\u0438? \u0421\u0430\u043c \u0442\u0435\u0437\u0438\u0441 \u0432 \u043e\u0442\u0432\u0435\u0442 \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u0439.D1\u0421\u043f\u043e\u0440\u041d\u0430 \u043a\u0430\u043a\u0443\u044e \u0440\u0435\u043f\u043b\u0438\u043a\u0443 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440\u0430 \u0430\u0432\u0442\u043e\u0440 \u043e\u0442\u0432\u0435\u0442\u0438\u043b \u0441 \u0438\u0440\u043e\u043d\u0438\u0435\u0439, \u0438 \u0447\u0442\u043e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440 \u0432 \u043d\u0435\u0439 \u0441\u043e\u0432\u0435\u0442\u043e\u0432\u0430\u043b?D2\u0421\u043f\u043e\u0440\u041a\u0430\u043a\u043e\u0435 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u043e\u0441\u043f\u043e\u0440\u0435\u043d\u043e, \u043a\u0430\u043a\u0438\u043c \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435\u043c, \u0438 \u043e\u043f\u0440\u043e\u0432\u0435\u0440\u0433\u043d\u0443\u0442\u043e \u043b\u0438 \u043e\u043d\u043e?D3\u0421\u043f\u043e\u0440\u0421\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432 \u0441\u043f\u043e\u0440\u0430 \u0430\u0432\u0442\u043e\u0440\u0430 \u0441\u043e \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u043c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440\u043e\u043c \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b \u0441\u0432\u043e\u0435\u0439 \u0440\u0435\u043f\u043b\u0438\u043a\u043e\u0439 \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432?C1\u0426\u0438\u0442\u0430\u0442\u0430\u0413\u0434\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440 \u0433\u043e\u0432\u043e\u0440\u0438\u0442, \u0447\u0442\u043e \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u044c \u0438 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b? \u0414\u0430\u0439 \u0434\u043e\u0441\u043b\u043e\u0432\u043d\u0443\u044e \u0446\u0438\u0442\u0430\u0442\u0443 \u0438 \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u0440\u043e\u043a\u0438.C2\u0426\u0438\u0442\u0430\u0442\u0430\u041f\u0440\u0438\u0432\u0435\u0434\u0438 \u0434\u043e\u0441\u043b\u043e\u0432\u043d\u0443\u044e \u0446\u0438\u0442\u0430\u0442\u0443, \u0433\u0434\u0435 \u0430\u0432\u0442\u043e\u0440 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0434\u043e\u043b\u044e \u044f\u0434\u0435\u0440 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u0438 \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u0440\u043e\u043a\u0438.U1\u0411\u0435\u0437 \u043e\u0442\u0432\u0435\u0442\u0430\u041a\u0430\u043a\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0443 \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0430\u0432\u0442\u043e\u0440 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043b PostgreSQL \u0438 ClickHouse?U2\u0411\u0435\u0437 \u043e\u0442\u0432\u0435\u0442\u0430\u041f\u043e\u0434 \u043a\u0430\u043a\u043e\u0439 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f pg_vexec?\u041e\u0442\u0432\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c\u0438, \u0431\u0435\u0437 LLM-\u0441\u0443\u0434\u044c\u0438. \u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0443\u0437\u043b\u043e\u0432 \u0434\u043e\u043b\u0436\u043d\u043e \u0441\u043e\u0432\u043f\u0430\u0441\u0442\u044c \u0442\u043e\u0447\u043d\u043e, \u0438 \u043b\u0438\u0448\u043d\u0438\u0439 \u0443\u0437\u0435\u043b \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043e\u0448\u0438\u0431\u043a\u043e\u0439. \u0427\u0438\u0441\u043b\u0430 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0441 \u044d\u0442\u0430\u043b\u043e\u043d\u043e\u043c. \u0426\u0438\u0442\u0430\u0442\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0434\u043e\u0441\u043b\u043e\u0432\u043d\u043e \u0431\u044b\u0442\u044c \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u0441\u0442\u0430\u0442\u044c\u0438. \u041d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 \u0431\u0435\u0437 \u043e\u0442\u0432\u0435\u0442\u0430 \u0437\u0430\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u201c\u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u0442\u201d.\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b sql, sparql \u0438 both &#8212; \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u0443 \u0430\u0433\u0435\u043d\u0442\u0430 \u043e\u0431\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430. \u041f\u043e\u0442\u043e\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u0435.\u042f \u0432\u044b\u0431\u0440\u0430\u043b \u0442\u0440\u0438 \u043c\u043e\u0434\u0435\u043b\u0438 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c\u0438 \u0432\u0435\u0441\u0430\u043c\u0438: DeepSeek V4.1 Flash, Gemma 4 31B \u0438 Qwen 3.8 27B. \u0418\u0445 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u0438\u043b\u0438 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043d\u0430 \u0441\u0432\u043e\u0438\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445. \u041f\u0430\u043c\u044f\u0442\u044c \u0430\u0433\u0435\u043d\u0442\u0430 \u043e\u0431\u044b\u0447\u043d\u043e \u0441 \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u0438 \u043f\u043e\u0441\u044b\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u0438\u0439 API \u0442\u0430\u043a \u0441\u0435\u0431\u0435 \u0438\u0434\u0435\u044f. \u0412 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0435 \u0436\u0435 \u044f \u0432\u044b\u0437\u044b\u0432\u0430\u043b \u043c\u043e\u0434\u0435\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 OpenRouter, \u043d\u0430 \u0441\u0432\u043e\u0435\u043c \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0435 \u0438\u043d\u0430\u0447\u0435 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0431\u044b \u0432 \u0440\u0430\u0437\u0443\u043c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u043e\u0433\u043d\u0430\u0442\u044c \u0434\u0430\u0436\u0435 27B-\u043c\u043e\u0434\u0435\u043b\u044c \u0432 4-\u0431\u0438\u0442\u043d\u043e\u0439 \u043a\u0432\u0430\u043d\u0442\u0438\u0437\u0430\u0446\u0438\u0438.\u042d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b \u0438 \u0446\u0435\u043d\u044b \u043c\u043e\u0434\u0435\u043b\u0435\u0439\u041c\u043e\u0434\u0435\u043b\u044c\u042d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u0412\u0445\u043e\u0434, $ \u0437\u0430 \u043c\u043b\u043d \u0442\u043e\u043a\u0435\u043d\u043e\u0432\u0418\u0437 \u043a\u044d\u0448\u0430\u0412\u044b\u0445\u043e\u0434DeepSeek V4.1 Flashdeepinfra\/fp80,0980,0030,294Gemma 4 31Bdeepinfra\/fp80,20\u043a\u044d\u0448\u0430 \u043d\u0435\u04420,40Qwen 3.8 27Bdeepinfra\/bf16, \u0437\u0430\u043f\u0430\u0441\u043d\u043e\u0439 cerebras\/fp160,15 (0,99)0,037 (0,99)1,875 (1,49)\u0426\u0435\u043d\u044b OpenRouter \u043d\u0430 27 \u043e\u043a\u0442\u044f\u0431\u0440\u044f 2026 \u0433\u043e\u0434\u0430&#8230;.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-500596","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/500596","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=500596"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/500596\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=500596"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=500596"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=500596"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}