{"id":101640,"date":"2025-03-15T13:10:42","date_gmt":"2025-03-15T09:40:42","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/populating-a-rag-with-data-from-enterprise-documents-repositories-for-generative-ai-51op\/"},"modified":"2025-03-15T13:10:42","modified_gmt":"2025-03-15T09:40:42","slug":"populating-a-rag-with-data-from-enterprise-documents-repositories-for-generative-ai-51op","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/populating-a-rag-with-data-from-enterprise-documents-repositories-for-generative-ai-51op\/","title":{"rendered":"\u062c\u0645\u0639 \u06a9\u0631\u062f\u0646 \u06cc\u06a9 \u067e\u0627\u0631\u0686\u0647 \u0628\u0627 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0645\u062e\u0627\u0632\u0646 \u0627\u0633\u0646\u0627\u062f \u0633\u0627\u0632\u0645\u0627\u0646\u06cc \u0628\u0631\u0627\u06cc AI \u062a\u0648\u0644\u06cc\u062f\u06cc"},"content":{"rendered":"<div data-article-id=\"2334543\" id=\"article-body\">\n<p>\u0628\u0647 \u0645\u0646\u0638\u0648\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 AI \u0645\u0648\u0644\u062f \u060c \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc OneDrive \u0628\u0647 Milvus \u0631\u0627 \u0645\u0635\u0631\u0641 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p><br \/>\u062a\u0635\u0648\u06cc\u0631 \u062d\u0633\u0646 \u0646\u06cc\u062a \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f milvus.io<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"\u062a\u063a\u06cc\u06cc\u0631 \u0648\u0636\u0639\u06cc\u062a \u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/populating-a-rag-with-data-from-enterprise-documents-repositories-for-generative-ai-51op\/#%D9%85%D9%82%D8%AF%D9%85%D9%87_%D9%88_%D8%A7%D9%86%DA%AF%DB%8C%D8%B2%D9%87\" >\u0645\u0642\u062f\u0645\u0647 \u0648 \u0627\u0646\u06af\u06cc\u0632\u0647<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/populating-a-rag-with-data-from-enterprise-documents-repositories-for-generative-ai-51op\/#%D8%A2%D9%85%D8%A7%D8%AF%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_Milvus_%D9%85%D8%AD%D9%84%DB%8C\" >\u0622\u0645\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc Milvus \u0645\u062d\u0644\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/populating-a-rag-with-data-from-enterprise-documents-repositories-for-generative-ai-51op\/#%D8%A7%D8%AA%D8%B5%D8%A7%D9%84_%D9%BE%D8%A7%DB%8C%DA%AF%D8%A7%D9%87_%D8%AF%D8%A7%D8%AF%D9%87_Milvus_%D8%B1%D8%A7_%D8%A2%D8%B2%D9%85%D8%A7%DB%8C%D8%B4_%DA%A9%D9%86%DB%8C%D8%AF_%D9%88_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D8%A7%D8%B5%D9%84%DB%8C_%D8%B1%D8%A7_%D8%AA%D9%87%DB%8C%D9%87_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0627\u062a\u0635\u0627\u0644 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 Milvus \u0631\u0627 \u0622\u0632\u0645\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u062f \u0648 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0635\u0644\u06cc \u0631\u0627 \u062a\u0647\u06cc\u0647 \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/populating-a-rag-with-data-from-enterprise-documents-repositories-for-generative-ai-51op\/#%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D8%A7%D8%B5%D9%84%DB%8C_%D9%88_%DA%86%D8%A7%D9%84%D8%B4_%D9%87%D8%A7\" >\u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0635\u0644\u06cc (\u0648 \u0686\u0627\u0644\u0634 \u0647\u0627)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/populating-a-rag-with-data-from-enterprise-documents-repositories-for-generative-ai-51op\/#%D9%BE%D8%A7%DB%8C%D8%A7%D9%86\" >\u067e\u0627\u06cc\u0627\u0646<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/populating-a-rag-with-data-from-enterprise-documents-repositories-for-generative-ai-51op\/#%D9%84%DB%8C%D9%86%DA%A9\" >\u0644\u06cc\u0646\u06a9<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D9%82%D8%AF%D9%85%D9%87_%D9%88_%D8%A7%D9%86%DA%AF%DB%8C%D8%B2%D9%87\"><\/span>\n<p>  \u0645\u0642\u062f\u0645\u0647 \u0648 \u0627\u0646\u06af\u06cc\u0632\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u062f\u0631 \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 \u0627\u062e\u06cc\u0631 \u060c \u0645\u0627 \u0628\u0647 \u0645\u0634\u062a\u0631\u06cc \u062e\u0648\u062f \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u06cc\u06a9 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0628\u0631\u062f\u0627\u0631 RAG (Milvus \u062f\u0631 \u0645\u0648\u0631\u062f \u0645\u0627) \u0631\u0627 \u0628\u0627 \u0645\u0635\u0631\u0641 \u0645\u062d\u062a\u0648\u0627 \u0627\u0632 \u0645\u062e\u0627\u0632\u0646 SharePoint\/OneDrive \u0634\u0631\u06a9\u062a \u062c\u0645\u0639 \u06a9\u0646\u062f \u060c \u06a9\u0647 \u0633\u067e\u0633 \u0627\u0632 LLM \u0645\u062a\u0646\u0627\u0633\u0628 \u0628\u0627 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0646\u06cc\u0627\u0632 \u0645\u0634\u062a\u0631\u06cc \u062f\u0631 \u067e\u0644\u062a \u0641\u0631\u0645 Watsonx.ai \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f \u060c \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 \u06cc\u06a9 \u0645\u062f\u0644 \u06af\u0631\u0627\u06cc\u062a.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u06a9\u062f\u06cc \u06a9\u0647 \u0645\u0646 \u0622\u0645\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u0645 \u0648 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc \u062f\u0631 \u0631\u0627\u06cc\u0627\u0646\u0647 \u062e\u0648\u062f \u0622\u0632\u0645\u0627\u06cc\u0634 \u0645\u06cc \u06a9\u0646\u0645. \u0627\u06cc\u0646 \u06a9\u062f \u0627\u0642\u062a\u0628\u0627\u0633 \u062e\u0648\u0627\u0647\u062f \u0634\u062f \u062a\u0627 \u062f\u0631 \u067e\u0644\u062a\u0641\u0631\u0645 \u0645\u0634\u062a\u0631\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u0648\u062f \u060c \u0627\u0645\u0627 \u0637\u0628\u0642 \u0645\u0639\u0645\u0648\u0644 \u062f\u0648\u0633\u062a \u062f\u0627\u0631\u0645 \u0627\u0632 \u0642\u0628\u0644 \u062a\u062d\u0642\u06cc\u0642\u0627\u062a \u062e\u0648\u062f \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u0645 &#8230; (\u0645\u0646 \u06a9\u0645\u06cc \u06af\u06cc\u06a9 \u0647\u0633\u062a\u0645 \u06a9\u0647 \u062d\u062f\u0633 \u0645\u06cc \u0632\u0646\u0645).<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A2%D9%85%D8%A7%D8%AF%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_Milvus_%D9%85%D8%AD%D9%84%DB%8C\"><\/span>\n<p>  \u0622\u0645\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc Milvus \u0645\u062d\u0644\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u062f\u0631 \u0645\u0642\u0627\u0644\u0647 \u0642\u0628\u0644\u06cc \u060c \u0645\u0646 \u062f\u0631 \u0645\u0648\u0631\u062f \u0645\u0634\u06a9\u0644\u0627\u062a\u06cc \u06a9\u0647 \u062f\u0631 \u062a\u0646\u0638\u06cc\u0645 \u06cc\u06a9 \u0645\u062d\u06cc\u0637 Milvus \u0631\u0648\u06cc \u0644\u067e \u062a\u0627\u067e \u062e\u0648\u062f \u0628\u0627 \u0622\u0646 \u0631\u0648\u0628\u0631\u0648 \u0634\u062f\u0645 \u060c \u0646\u0648\u0634\u062a\u0645 \u060c \u062e\u0648\u0628 \u062d\u062f\u0633 \u0645\u06cc \u0632\u0646\u0645 \u06a9\u0647 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0631\u0627\u0647\u06cc \u0628\u0633\u06cc\u0627\u0631 \u0633\u0627\u062f\u0647 \u0648 \u0633\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0645. \u0622\u062e\u0631\u062a \u0645\u0631\u0627\u062d\u0644 \u0627\u0633\u062a.<\/p>\n<blockquote>\n<p>\u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0634\u0645\u0627 \u0628\u0647 Docker \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f \u060c \u06cc\u0627 \u062f\u0631 \u0645\u0648\u0631\u062f \u0645\u0646 \u0627\u0632 Podman \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u0645.<\/p>\n<\/blockquote>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code># fetch the startup script\ncurl -sfL https:\/\/raw.githubusercontent.com\/milvus-io\/milvus\/master\/scripts\/standalone_embed.sh -o standalone_embed.sh\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u06cc \u0648 \u062a\u0645\u0627\u0645 \u06a9\u0627\u0631\u06cc \u06a9\u0647 \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0641\u06cc\u0644\u0645\u0646\u0627\u0645\u0647 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f \u060c \u0627\u06af\u0631\u0686\u0647 \u0645\u0646 \u06cc\u06a9 \u0646\u0627\u0645 \u0645\u0633\u062a\u0639\u0627\u0631 \u0631\u0627 \u062f\u0631 \u0644\u067e \u062a\u0627\u067e \u062e\u0648\u062f \u0633\u0627\u062e\u062a\u0647 \u0627\u0645 \u06a9\u0647 \u0628\u0627\u0639\u062b \u0645\u06cc \u0634\u0648\u062f <strong>alias docker = &#8220;podman&#8221;<\/strong>\u060c \u0628\u0631\u0627\u06cc \u0633\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f \u060c \u0645\u0646 \u062a\u0645\u0627\u0645 \u062f\u0633\u062a\u0648\u0631\u0627\u062a &#8220;sudo docker&#8221; \u0631\u0627 \u0628\u0647 &#8220;sudo podman&#8221; \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u067e\u0631\u0648\u0646\u062f\u0647 \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc \u0634\u062f\u0647 &#8220;\u0645\u0633\u062a\u0642\u0644_\u0645\u0628\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code># the original call is 'bash standalone_embed.sh start'\nbash standalone_podman_embed.sh start\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0648 \u0647\u0645\u06cc\u0646 \u0627\u0633\u062a. \u0646\u0645\u0648\u0646\u0647 Milvus \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u0628\u0627\u0634\u062f. \u0627\u0645\u0627 \u0645\u0627 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u0627\u0632 \u0622\u0646 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%D8%AA%D8%B5%D8%A7%D9%84_%D9%BE%D8%A7%DB%8C%DA%AF%D8%A7%D9%87_%D8%AF%D8%A7%D8%AF%D9%87_Milvus_%D8%B1%D8%A7_%D8%A2%D8%B2%D9%85%D8%A7%DB%8C%D8%B4_%DA%A9%D9%86%DB%8C%D8%AF_%D9%88_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D8%A7%D8%B5%D9%84%DB%8C_%D8%B1%D8%A7_%D8%AA%D9%87%DB%8C%D9%87_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u0627\u062a\u0635\u0627\u0644 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 Milvus \u0631\u0627 \u0622\u0632\u0645\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u062f \u0648 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0635\u0644\u06cc \u0631\u0627 \u062a\u0647\u06cc\u0647 \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u062f\u0631 \u067e\u0627\u06cc\u062a\u0648\u0646 \u0645\u06cc \u0646\u0648\u06cc\u0633\u0645 \u060c \u06cc\u06a9 \u0645\u062d\u06cc\u0637 \u0645\u062c\u0627\u0632\u06cc \u0631\u0627 \u062a\u0647\u06cc\u0647 \u0645\u06cc \u06a9\u0646\u0645 (\u0628\u0647\u062a\u0631\u06cc\u0646 \u0639\u0645\u0644\u06cc \u06a9\u0647 \u0628\u0647 \u0647\u0645\u0647 \u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc \u06a9\u0646\u0645 \u06a9\u0647 \u0631\u0627\u0647 \u0633\u062e\u062a \u0631\u0627 \u06cc\u0627\u062f \u06af\u0631\u0641\u062a\u0645!<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>python3.11 -m venv sharepoint_milvus\nsource sharepoint_milvus\/bin\/activate\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u06cc \u0646\u0635\u0628 \u0627\u0648\u0644\u06cc\u0646 \u0628\u0633\u062a\u0647 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631 \u0628\u0627 Milvus \u0627\u0633\u062a.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>pip install --upgrade pymilvus\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0648 \u0633\u067e\u0633 \u0622\u0632\u0645\u0627\u06cc\u0634 \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u0648\u06a9\u062a\u0648\u0631 \u0645\u062d\u0644\u06cc DB.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>from pymilvus import connections\n\ntry:\n    connections.connect(host=\"127.0.0.1\", port=\"19530\")\n    print(\"Milvus connection successful!\")\n    connections.disconnect(\"default\")\nexcept Exception as e:\n    print(f\"Milvus connection failed: {e}\")\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u062a\u0635\u0627\u0644 \u062e\u0648\u0628 \u0627\u0633\u062a \u060c \u0622\u0632\u0645\u0627\u06cc\u0634 \u062f\u0648\u0645 \u06a9\u0647 \u0645\u0646 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u062f \u0646\u0645\u0648\u0646\u0647 \u0627\u0632 \u0633\u0627\u06cc\u062a Milvus \u0627\u0646\u062c\u0627\u0645 \u062f\u0627\u062f\u0645 \u062a\u0627 \u06cc\u06a9 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0628\u0631\u062f\u0627\u0631 \u0648 \u0622\u0632\u0645\u0627\u06cc\u0634 \u0622\u0646 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u0645.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>from pymilvus import MilvusClient\nimport numpy as np\n\nclient = MilvusClient(\".\/milvus_demo.db\")\nclient.create_collection(\n    collection_name=\"demo_collection\",\n    dimension=384  # The vectors we will use in this demo has 384 dimensions\n)\n\ndocs = [\n    \"Artificial intelligence was founded as an academic discipline in 1956.\",\n    \"Alan Turing was the first person to conduct substantial research in AI.\",\n    \"Born in Maida Vale, London, Turing was raised in southern England.\",\n]\n\nvectors = [[ np.random.uniform(-1, 1) for _ in range(384) ] for _ in range(len(docs)) ]\ndata = [ {\"id\": i, \"vector\": vectors[i], \"text\": docs[i], \"subject\": \"history\"} for i in range(len(vectors)) ]\nres = client.insert(\n    collection_name=\"demo_collection\",\n    data=data\n)\n\nres = client.search(\n    collection_name=\"demo_collection\",\n    data=[vectors[0]],\n    filter=\"subject == 'history'\",\n    limit=2,\n    output_fields=[\"text\", \"subject\"],\n)\nprint(res)\n\nres = client.query(\n    collection_name=\"demo_collection\",\n    filter=\"subject == 'history'\",\n    output_fields=[\"text\", \"subject\"],\n)\nprint(res)\n\nres = client.delete(\n    collection_name=\"demo_collection\",\n    filter=\"subject == 'history'\",\n)\nprint(res)\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u06a9\u0631\u062f \u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0647 \u062c\u0644\u0648 \u062d\u0631\u06a9\u062a \u06a9\u0646\u06cc\u0645.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D8%A7%D8%B5%D9%84%DB%8C_%D9%88_%DA%86%D8%A7%D9%84%D8%B4_%D9%87%D8%A7\"><\/span>\n<p>  \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0635\u0644\u06cc (\u0648 \u0686\u0627\u0644\u0634 \u0647\u0627)<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<blockquote>\n<p>\u0646\u0648\u0634\u062a\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0635\u0644\u06cc \u0648 \u0622\u0632\u0645\u0627\u06cc\u0634 \u0622\u0646 \u0632\u0645\u0627\u0646 \u0632\u06cc\u0627\u062f\u06cc \u0637\u0648\u0644 \u06a9\u0634\u06cc\u062f. \u0647\u0645\u0686\u0646\u06cc\u0646 \u06cc\u06a9 \u0633\u0644\u0628 \u0645\u0633\u0626\u0648\u0644\u06cc\u062a \u0628\u0632\u0631\u06af \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f. \u062f\u0631 IBM \u060c \u0645\u0627 \u0627\u0632 OneDrive \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9\u06cc \u0627\u0632 \u0645\u062e\u0627\u0632\u0646 \u0633\u0627\u0632\u0645\u0627\u0646\u06cc \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u060c \u0627\u06af\u0631\u0686\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0627 \u0633\u06cc\u0633\u062a\u0645 \u0648\u0631\u0648\u062f \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645 \u062f\u0627\u062e\u0644\u06cc SSO \u0628\u0647 \u062f\u0631\u0627\u06cc\u0648 \u062f\u0633\u062a\u0631\u0633\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u0645 \u060c \u0627\u0645\u0627 \u062e\u0637 \u0645\u0634\u06cc \u0627\u0645\u0646\u06cc\u062a\u06cc IBM \u062f\u0642\u06cc\u0642 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u06cc \u0645\u0627\u0646\u0646\u062f \u0645\u0646 \u0646\u0648\u0634\u062a\u0645. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0646 \u06a9\u062f \u0631\u0627 \u062f\u0631 \u0645\u0648\u0631\u062f \u0622\u062f\u0631\u0633 \u0647\u0627\u06cc \u0627\u06cc\u0645\u06cc\u0644 \u062e\u0648\u062f\u0645 \u0627\u0632 &#8220;Outlook&#8221; \u0648 \u062f\u0631\u0627\u06cc\u0648 \u062e\u0648\u062f\u0645 \u0622\u0632\u0645\u0627\u06cc\u0634 \u06a9\u0631\u062f\u0645 \u062a\u0627 \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u0645 \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u06a9\u0627\u0631 \u06a9\u0646\u062f (\u0645\u0646 \u0647\u0645\u0686\u0646\u06cc\u0646 \u062f\u0631 \u0645\u0648\u0631\u062f \u0641\u0639\u0627\u0644\u06cc\u062a \u0647\u0627\u06cc \u0645\u0634\u06a9\u0648\u06a9 \u062f\u0631 \u062d\u0633\u0627\u0628 \u062e\u0648\u062f \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0645\u0627\u06cc\u06a9\u0631\u0648\u0633\u0627\u0641\u062a \u0627\u06cc\u0645\u06cc\u0644 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u062f\u0645.<\/p>\n<\/blockquote>\n<p>\u0628\u0627 \u06af\u0641\u062a\u0646 \u0627\u06cc\u0646 \u062d\u0631\u0641 \u060c \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0645\u0646 \u0628\u0631\u06af\u0631\u062f\u06cc\u0645. \u0627\u0648\u0644 \u0648 \u0637\u0628\u0642 \u0645\u0639\u0645\u0648\u0644 \u060c \u0645\u0646 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 &#8220;.env&#8221; \u0631\u0627 \u0628\u0627 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u062a\u0635\u0627\u0644\/\u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062e\u0648\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0645.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>export SHAREPOINT_USERNAME=\"xxx@yyy.com\"\nexport SHAREPOINT_PASSWORD=\"PASSWORD\"\nexport SHAREPOINT_SITE_URL=\"THE_MAIN_URL\"\nexport SHAREPOINT_DOCUMENT_LIBRARY=\"THE_MAIN_DOCUMENT_FOLDER\"\nexport SHAREPOINT_SUBFOLDER_NAME=\"THE_TARGET_SUBFOLDER\"\n\n' specific to my environment\nexport TOKENIZERS_PARALLELISM=\"false\" \n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0646 \u0627\u06cc\u0646 \u067e\u0631\u0648\u0646\u062f\u0647 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 &#8220;\u0645\u0646\u0628\u0639&#8221; \u0645\u06cc \u06a9\u0646\u0645.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>source .env\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0633\u067e\u0633 \u06a9\u062f \u0645\u06cc \u0622\u06cc\u062f. \u0627\u0628\u062a\u062f\u0627 \u0646\u06af\u0627\u0647\u06cc \u0628\u0647 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u06cc \u0627\u0646\u062f\u0627\u0632\u06cc\u0645.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>import os\nfrom office365.runtime.auth.authentication_context import AuthenticationContext\nfrom office365.sharepoint.client_context import ClientContext\nfrom office365.sharepoint.files.file import File\nfrom pymilvus import connections, Collection, CollectionSchema, FieldSchema, DataType, utility\nimport tiktoken\nimport hashlib\nimport time\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u067e\u0633 \u0627\u0632 \u0622\u0646 \u060c \u0628\u0631\u062e\u06cc \u0627\u0632 \u0645\u0648\u0627\u0631\u062f \u0627\u0634\u06a9\u0627\u0644 \u0632\u062f\u0627\u06cc\u06cc \u0628\u0647 \u0645\u0646\u0638\u0648\u0631 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0627\u0631\u0627\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0646\u0627\u0633\u0628\/\u0627\u0639\u062a\u0628\u0627\u0631 \u0627\u0633\u062a.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code># Configuration\nSHAREPOINT_USERNAME = os.environ.get(\"SHAREPOINT_USERNAME\")\nSHAREPOINT_PASSWORD = os.environ.get(\"SHAREPOINT_PASSWORD\")\nSHAREPOINT_SITE_URL = os.environ.get(\"SHAREPOINT_SITE_URL\")\nSHAREPOINT_DOCUMENT_LIBRARY = os.environ.get(\"SHAREPOINT_DOCUMENT_LIBRARY\")\nSUBFOLDER_NAME = os.environ.get(\"SHAREPOINT_SUBFOLDER_NAME\").strip()  # Trim spaces\n\nprint(f\"SHAREPOINT_USERNAME: {os.environ.get('SHAREPOINT_USERNAME')}\")\nprint(f\"SHAREPOINT_PASSWORD: {os.environ.get('SHAREPOINT_PASSWORD')}\")\nprint(f\"SHAREPOINT_SITE_URL: {os.environ.get('SHAREPOINT_SITE_URL')}\")\nprint(f\"SHAREPOINT_DOCUMENT_LIBRARY: {os.environ.get('SHAREPOINT_DOCUMENT_LIBRARY')}\")\nprint(f\"SHAREPOINT_SUBFOLDER_NAME: {os.environ.get('SHAREPOINT_SUBFOLDER_NAME')}\")\n\nprint(f\"Complete URL: \"+ SHAREPOINT_SITE_URL+ \"https:\/\/dev.to\/\" + SHAREPOINT_DOCUMENT_LIBRARY + \"https:\/\/dev.to\/\" + SUBFOLDER_NAME)\nC_URL = SHAREPOINT_SITE_URL+ \"https:\/\/dev.to\/\" + SHAREPOINT_DOCUMENT_LIBRARY + \"https:\/\/dev.to\/\" + SUBFOLDER_NAME\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>Milvus \u0645\u0646 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u0627\u0633\u062a \u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0633\u062e\u062a \u0627\u0633\u062a (\u062e\u0648\u0628 \u060c \u0632\u0634\u062a \u0627\u0633\u062a \u060c \u0645\u0646 \u0627\u0639\u062a\u0631\u0627\u0641 \u0645\u06cc \u06a9\u0646\u0645).<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>MILVUS_HOST = \"localhost\"\nMILVUS_PORT = \"19530\"\nMILVUS_COLLECTION_NAME = \"document_chunks\"\nCHUNK_SIZE = 512\nCHUNK_OVERLAP = 100\nEMBEDDING_DIMENSION = 1536\nENCODING_NAME = \"cl100k_base\"\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0648 \u0628\u0627 \u0627\u06cc\u0646\u062c\u0627 \u06a9\u062f \u06a9\u0627\u0645\u0644 \u0627\u0633\u062a.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>import os\nfrom office365.runtime.auth.authentication_context import AuthenticationContext\nfrom office365.sharepoint.client_context import ClientContext\nfrom office365.sharepoint.files.file import File\nfrom pymilvus import connections, Collection, CollectionSchema, FieldSchema, DataType, utility\nimport tiktoken\nimport hashlib\nimport time\n\n# Configuration\nSHAREPOINT_USERNAME = os.environ.get(\"SHAREPOINT_USERNAME\")\nSHAREPOINT_PASSWORD = os.environ.get(\"SHAREPOINT_PASSWORD\")\nSHAREPOINT_SITE_URL = os.environ.get(\"SHAREPOINT_SITE_URL\")\nSHAREPOINT_DOCUMENT_LIBRARY = os.environ.get(\"SHAREPOINT_DOCUMENT_LIBRARY\")\nSUBFOLDER_NAME = os.environ.get(\"SHAREPOINT_SUBFOLDER_NAME\").strip()  # Trim spaces\n\nprint(f\"SHAREPOINT_USERNAME: {os.environ.get('SHAREPOINT_USERNAME')}\")\nprint(f\"SHAREPOINT_PASSWORD: {os.environ.get('SHAREPOINT_PASSWORD')}\")\nprint(f\"SHAREPOINT_SITE_URL: {os.environ.get('SHAREPOINT_SITE_URL')}\")\nprint(f\"SHAREPOINT_DOCUMENT_LIBRARY: {os.environ.get('SHAREPOINT_DOCUMENT_LIBRARY')}\")\nprint(f\"SHAREPOINT_SUBFOLDER_NAME: {os.environ.get('SHAREPOINT_SUBFOLDER_NAME')}\")\n\nprint(f\"Complete URL: \"+ SHAREPOINT_SITE_URL+ \"https:\/\/dev.to\/\" + SHAREPOINT_DOCUMENT_LIBRARY + \"https:\/\/dev.to\/\" + SUBFOLDER_NAME)\nC_URL = SHAREPOINT_SITE_URL+ \"https:\/\/dev.to\/\" + SHAREPOINT_DOCUMENT_LIBRARY + \"https:\/\/dev.to\/\" + SUBFOLDER_NAME\n\nMILVUS_HOST = \"localhost\"\nMILVUS_PORT = \"19530\"\nMILVUS_COLLECTION_NAME = \"document_chunks\"\nCHUNK_SIZE = 512\nCHUNK_OVERLAP = 100\nEMBEDDING_DIMENSION = 1536\nENCODING_NAME = \"cl100k_base\"\n\ndef authenticate_sharepoint(site_url, username, password):\n    \"\"\"Authenticates with SharePoint.\"\"\"\n    ctx_auth = AuthenticationContext(site_url)\n    if ctx_auth.acquire_token_for_user(username, password):\n        ctx = ClientContext(site_url, ctx_auth)\n        print(\"SharePoint authentication successful.\")\n        return ctx\n    else:\n        raise Exception(f\"Failed to authenticate: {ctx_auth.get_last_error()}\")\n\ndef download_file(ctx, server_relative_url):\n    \"\"\"Downloads a file from SharePoint.\"\"\"\n    file = File.open_binary(ctx, server_relative_url)\n    ctx.execute_query()\n    print(f\"Downloaded file: {server_relative_url}\")\n    return file.content\n\ndef get_sharepoint_files(ctx, library_name, subfolder_path=None):\n    \"\"\"\n    Fetches files from a SharePoint doc library or a specific subfolder.\n    \"\"\"\n    try:\n        list_obj = ctx.web.lists.get_by_title(library_name)\n        ctx.load(list_obj.root_folder)\n        ctx.execute_query()\n\n        if subfolder_path:\n            full_folder_url = f\"{list_obj.root_folder.serverRelativeUrl}\/{subfolder_path}\"\n            print(f\"full_folder_url: {full_folder_url}\")\n            try:\n                folder = ctx.web.get_folder_by_server_relative_url(full_folder_url)\n                ctx.load(folder)\n                ctx.execute_query()\n                print(f\"Folder object: {folder}\")\n                print(f\"Folder.serverRelativeUrl: {folder.serverRelativeUrl}\")\n                print(f\"Folder.exists: {folder.exists}\")\n            except Exception as folder_error:\n                print(f\"Error during get_folder_by_server_relative_url(): {folder_error}\")\n                return []\n\n            ctx.load(folder)\n            ctx.execute_query()\n            try:\n                items = folder.files.get_all().execute_query()\n            except Exception as query_error:\n                print(f\"Error during folder.files.get_all().execute_query(): {query_error}\")\n                return []\n\n        else:\n            items = list_obj.items.get_all().execute_query()\n\n        files = []\n        if items:\n            if isinstance(items, list):\n                for i, item in enumerate(items):\n                    try:\n                        print(f\"Item {i}: {item}\")\n                        if hasattr(item, 'properties'):\n                            print(f\"Item {i} properties: {item.properties}\")\n                        else:\n                            print(f\"Item {i} has no properties.\")\n                        if hasattr(item, 'serverRelativeUrl'):\n                            print(f\"Item {i} serverRelativeUrl: {item.serverRelativeUrl}\")\n                        else:\n                            print(f\"Item {i} has no serverRelativeUrl.\")\n\n                        if hasattr(item, 'properties') and 'ServerRelativeUrl' in item.properties:\n                            files.append(item.properties[\"ServerRelativeUrl\"])\n                        else:\n                            print(f\"Item {i} does not have properties or ServerRelativeUrl: {item}\")\n                    except Exception as item_error:\n                        print(f\"Error processing item {i}: {item_error}\")\n            else:\n                print(\"Items is not a list.\")\n        else:\n            print(\"Items list is empty.\")\n\n        print(f\"Found {len(files)} files in '{library_name}'. Subfolder: {subfolder_path}\")\n        print(f\"Files retrieved: {files}\")\n        return files\n\n    except Exception as e:\n        print(f\"Error in get_sharepoint_files: {e}\")\n        return []\n\ndef chunk_text(text, chunk_size, chunk_overlap, encoding_name):\n    \"\"\"Splits text into chunks with overlap.\"\"\"\n    encoder = tiktoken.get_encoding(encoding_name)\n    tokens = encoder.encode(text)\n    chunks = []\n    for i in range(0, len(tokens), chunk_size - chunk_overlap):\n        chunk = tokens[i : i + chunk_size]\n        chunks.append(encoder.decode(chunk))\n    print(f\"Text chunked into {len(chunks)} chunks.\")\n    return chunks\n\ndef create_milvus_collection(collection_name, dimension):\n    \"\"\"Creates a Milvus collection.\"\"\"\n    connections.connect(host=MILVUS_HOST, port=MILVUS_PORT)\n    if utility.has_collection(collection_name):\n        utility.drop_collection(collection_name)\n\n    fields = [\n        FieldSchema(name=\"id\", dtype=DataType.INT64, is_primary=True, auto_id=True),\n        FieldSchema(name=\"document_id\", dtype=DataType.VARCHAR, max_length=256),\n        FieldSchema(name=\"chunk_id\", dtype=DataType.INT64),\n        FieldSchema(name=\"chunk_text\", dtype=DataType.VARCHAR, max_length=65535),\n        FieldSchema(name=\"embedding\", dtype=DataType.FLOAT_VECTOR, dim=dimension),\n    ]\n    schema = CollectionSchema(fields, \"Document Chunks\")\n    collection = Collection(collection_name, schema)\n    index_params = {\n        \"metric_type\": \"IP\",\n        \"index_type\": \"HNSW\",\n        \"params\": {\"M\": 8, \"efConstruction\": 64},\n    }\n    collection.create_index(field_name=\"embedding\", index_params=index_params)\n    print(f\"Milvus collection '{collection_name}' created.\")\n    return collection\n\ndef insert_chunks_to_milvus(collection, document_id, chunks, embeddings):\n    \"\"\"Inserts into Milvus.\"\"\"\n    print(f\"Chunks length: {len(chunks)}\")\n    print(f\"Embeddings length: {len(embeddings)}\")\n    data = [\n        [document_id] * len(chunks),\n        list(range(len(chunks))),\n        chunks,\n        embeddings,\n    ]\n    collection.insert(data)\n    print(f\"Inserted {len(chunks)} chunks into Milvus.\")\n\ndef generate_embeddings(chunks):\n    \"\"\"Generates embeddings for chunks \"\"\"\n    embeddings = [[0.1] * EMBEDDING_DIMENSION for _ in chunks]\n    print(f\"Generated embeddings for {len(chunks)} chunks.\")\n    print(f\"Embeddings: {embeddings}\")\n    return embeddings\n\ndef process_sharepoint_documents():\n    \"\"\"Main process\"\"\"\n    try:\n        start_time = time.time()\n        ctx = authenticate_sharepoint(SHAREPOINT_SITE_URL, SHAREPOINT_USERNAME, SHAREPOINT_PASSWORD)\n        SUBFOLDER_NAME = os.environ.get(\"SHAREPOINT_SUBFOLDER_NAME\").strip()\n        print(f\"SUBFOLDER_NAME (process_sharepoint_documents): {SUBFOLDER_NAME}\")  \n        print(f\"SHAREPOINT_DOCUMENT_LIBRARY (process_sharepoint_documents): {SHAREPOINT_DOCUMENT_LIBRARY}\")\n        if SUBFOLDER_NAME:\n            files = get_sharepoint_files(ctx, SHAREPOINT_DOCUMENT_LIBRARY, SUBFOLDER_NAME)\n        else:\n            files = get_sharepoint_files(ctx, SHAREPOINT_DOCUMENT_LIBRARY)\n\n        if not files:\n            print(\"No files found in the specified SharePoint location.\")\n            return\n\n        collection = create_milvus_collection(MILVUS_COLLECTION_NAME, EMBEDDING_DIMENSION)\n\n        for file_ref in files:\n            file_start_time = time.time()\n            try:\n                print(f\"Processing file: {file_ref}\")\n                file_content = download_file(ctx, file_ref).decode(\"utf-8\", errors=\"ignore\")\n                document_id = hashlib.md5(file_ref.encode()).hexdigest()\n\n                chunks = chunk_text(file_content, CHUNK_SIZE, CHUNK_OVERLAP, ENCODING_NAME)\n                embeddings = generate_embeddings(chunks)\n\n                if not embeddings:\n                    print(f\"No embeddings were generated for file: {file_ref}\")\n                    continue\n\n                insert_chunks_to_milvus(collection, document_id, chunks, embeddings)\n                print(f\"File processed in {time.time() - file_start_time:.2f} seconds.\")\n\n            except Exception as file_error:\n                print(f\"Error processing file {file_ref}: {file_error}\")\n        collection.flush()\n        print(\"SharePoint documents processed and indexed.\")\n        print(f\"Total processing time: {time.time() - start_time:.2f} seconds.\")\n\n    except Exception as e:\n        print(f\"An error occurred: {e}\")\n\nif __name__ == \"__main__\":\n    process_sharepoint_documents()\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062e\u0648\u0628 \u060c \u0627\u06cc\u0646 \u06a9\u062f \u0627\u0633\u062a. \u0627\u06cc\u0646 \u062a\u06a9\u0647 \u0647\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0628\u0647\u062a\u0631\u06cc\u0646 Fit LLM \u062f\u0631 &#8220;\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u0646\u062f&#8221;<strong>watsonx.ai<\/strong>&#8220;\u0628\u0633\u062a\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0645\u0634\u062a\u0631\u06cc.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%BE%D8%A7%DB%8C%D8%A7%D9%86\"><\/span>\n<p>  \u067e\u0627\u06cc\u0627\u0646<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0628\u0627\u0644\u0627 \u0630\u06a9\u0631 \u0634\u062f \u060c \u0627\u06cc\u0646 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0628\u0647 \u0645\u0646\u0638\u0648\u0631 \u0622\u0645\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u062e\u0648\u062f\u0645 \u0628\u0631\u0627\u06cc \u067e\u0631\u0648\u0698\u0647 \u0627\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0627 \u0645\u0634\u062a\u0631\u06cc \u062e\u0648\u062f \u062a\u062d\u0642\u0642 \u0645\u06cc \u0628\u062e\u0634\u06cc\u0645. \u0645\u062b\u0644 \u0647\u0645\u06cc\u0634\u0647 \u060c \u0645\u0646 \u0645\u06cc \u062e\u0648\u0627\u0647\u0645 \u062f\u0633\u062a\u0627\u0646\u0645 \u0631\u0627 \u06a9\u062b\u06cc\u0641 \u06a9\u0646\u0645 \u0648 \u0627\u0632 \u0622\u0646\u0686\u0647 \u0645\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0631\u0627\u0647 \u062d\u0644 \u0628\u0631\u0627\u06cc \u0645\u0634\u062a\u0631\u06cc\u0627\u0646 \u0648 \u0634\u0631\u06a9\u0627\u06cc \u062a\u062c\u0627\u0631\u06cc \u062e\u0648\u062f \u067e\u06cc\u0634\u0646\u0647\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u060c \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0645 \u060c \u0648 \u0628\u0627\u0644\u0627\u062a\u0631 \u0627\u0632 \u0647\u0645\u0647 \u060c \u0645\u0646 \u0627\u06cc\u0646 \u0631\u0627 \u062f\u0648\u0633\u062a \u062f\u0627\u0631\u0645.<\/p>\n<p>\u0628\u0627 \u062a\u0634\u06a9\u0631 \u0627\u0632 \u062e\u0648\u0627\u0646\u062f\u0646<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%84%DB%8C%D9%86%DA%A9\"><\/span>\n<p>  \u0644\u06cc\u0646\u06a9<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0628\u0647 \u0645\u0646\u0638\u0648\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 AI \u0645\u0648\u0644\u062f \u060c \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc OneDrive \u0628\u0647 Milvus \u0631\u0627 \u0645\u0635\u0631\u0641 \u0645\u06cc \u06a9\u0646\u062f. \u062a\u0635\u0648\u06cc\u0631 \u062d\u0633\u0646 \u0646\u06cc\u062a \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f milvus.io \u0645\u0642\u062f\u0645\u0647 \u0648 \u0627\u0646\u06af\u06cc\u0632\u0647 \u062f\u0631 \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 \u0627\u062e\u06cc\u0631 \u060c \u0645\u0627 \u0628\u0647 \u0645\u0634\u062a\u0631\u06cc \u062e\u0648\u062f \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u06cc\u06a9 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0628\u0631\u062f\u0627\u0631 RAG (Milvus \u062f\u0631 \u0645\u0648\u0631\u062f \u0645\u0627) \u0631\u0627 \u0628\u0627 \u0645\u0635\u0631\u0641 \u0645\u062d\u062a\u0648\u0627 \u0627\u0632 \u0645\u062e\u0627\u0632\u0646 SharePoint\/OneDrive &hellip;<\/p>\n","protected":false},"author":2,"featured_media":101641,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-101640","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/101640","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=101640"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/101640\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/101641"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=101640"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=101640"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=101640"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}