{"_id":"@beerose/semantic-search","_rev":"6-e4b443d40032214fe0727222c96f697b","name":"@beerose/semantic-search","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0-beta.1":{"name":"@beerose/semantic-search","license":"MIT","version":"1.0.0-beta.1","description":"An OpenAI-powered CLI to build a semantic search index from your MDX files.","author":{"name":"Alkandra Sikora","email":"alexsandra.sikora@gmail.com","url":"https://aleksandra.codes"},"homepage":"https://github.com/beerose/semantic-search/blob/main/README.md","bin":{"semantic-search":"bin/cli.js"},"type":"module","main":"dist/index.js","types":"dist/index.d.ts","publishConfig":{"access":"public"},"keywords":["semantic","search","cli","mdx","pinecone","openai"],"scripts":{"build":"tsc -P tsconfig.build.json","test":"vitest run","test:watch":"vitest","lint":"eslint src","typecheck":"tsc --noEmit","format":"prettier --write src,tests"},"devDependencies":{"@edgeandnode/eslint-config":"^1.3.0","@typescript-eslint/parser":"^5.52.0","eslint":"^8.34.0","prettier":"^2.8.4","typescript":"^4.9.5","vitest":"^0.28.5"},"dependencies":{"@types/mdast":"^3.0.10","@types/node":"^18.13.0","cac":"^6.7.14","dotenv":"^16.0.3","fs":"0.0.1-security","gpt3-tokenizer":"^1.1.5","node-fetch":"^3.3.0","openai":"^3.1.0","pinecone-client":"^1.0.1","remark":"^14.0.2","remark-frontmatter":"^4.0.1","remark-gfm":"^3.0.1","remark-mdx":"^2.3.0","remark-smartypants":"^2.0.0","tiny-glob":"^0.2.9","ts-node":"^10.9.1","unified":"^10.1.2"},"gitHead":"cd5d8a690924fb3c12b532be539a4711d5335fff","_id":"@beerose/semantic-search@1.0.0-beta.1","_nodeVersion":"19.6.0","_npmVersion":"9.4.0","dist":{"integrity":"sha512-6U8ULTHhRTMoqr/8qcP2fxsGpaRSFucqjfNva8TOXVVWslF16Z8KXktU9o+jn3OV0kCZl8V+svfFkBZFGVM7Qg==","shasum":"85aa9d41521b2ec62fefef37bcfa39dfbf7c70f8","tarball":"https://registry.npmjs.org/@beerose/semantic-search/-/semantic-search-1.0.0-beta.1.tgz","fileCount":26,"unpackedSize":25013,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAznSKqe6PgLm/2TRqBtZD+n7K5WeYw9j3zWwuzsf2CWAiEAgG0xXK53WStJgo9swKpjc2uerh8LP3W68rp2HLi/618="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj7QYzACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpv7Q//Rrz+vEAym++9yklSbrKFMp4HfogtcESJwlvKzk2aDx+WApJI\r\nfCKALUZk4R0nzsGkzwFTuk25hZ7l50MVjZ46j41IFPfRlCtED9p2pOaCk9+A\r\nvYAjQVn3bK4TaGlCd7m2SK+dpMm0IN/OlgKYHLQS4lFBRMxBwT8fnes82TMk\r\n7hutjXn/mXa7cUwUzJ9SbT32MGbuBlJEQLIgEOqgYDqEycgzFP4OmRm+7+Vx\r\n7qnVSWTV+5J3TmJMfP/LUKfRPmjoUXV0vrWfAPI6hEiP/0V/1jw4yfmIpJBe\r\nv/Z1Kx7DmCDdYAT83eHhDYeGAl6dFgzYn579DCzJcGS3PK1eUKxqXe8mrJKh\r\nS5bXmrtYabpJZTjU1p+SrMi5MbD7tF73ooW0RHBVOsPyzGAONZRB2WNIIrSl\r\n/M99KUoovKzdDw6To/5DxKLrPHuj3cVBFYHpFmobiVIPTJFME7tABSWSD29U\r\nJkFLOKA7jxKRDxI9K4oJG+tD2uraUILJJ8Nxf1BDcS6tGVQhDVg8Tobn4FVd\r\nfDoTX1lxDpZMT9G3DzrUaTEomqnwZ5tOAb/UdImKpvpTKAUlW88eS55MWTiU\r\n3nWEHVYk2cX+GyguvieZXdwPwkdFu8WMD/YZDQPArT7AKz0YlkeWwXomPnA/\r\nx2ixpat81iUZhNYGBb/nm+g9CTu4OJFHJh4=\r\n=Mvlu\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"anemone","email":"alexsandra.sikora@gmail.com"},"directories":{},"maintainers":[{"name":"anemone","email":"alexsandra.sikora@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/semantic-search_1.0.0-beta.1_1676478002702_0.4371772224595618"},"_hasShrinkwrap":false},"1.0.0-beta.2":{"name":"@beerose/semantic-search","license":"MIT","version":"1.0.0-beta.2","description":"An OpenAI-powered CLI to build a semantic search index from your MDX files.","author":{"name":"Alkandra Sikora","email":"alexsandra.sikora@gmail.com","url":"https://aleksandra.codes"},"homepage":"https://github.com/beerose/semantic-search/blob/main/README.md","bin":{"semantic-search":"bin/cli.js"},"type":"commonjs","main":"dist/index.js","types":"dist/index.d.ts","publishConfig":{"access":"public"},"keywords":["semantic","search","cli","mdx","pinecone","openai"],"scripts":{"build":"tsup src/index.ts src/bin/cli.ts --format cjs,esm --dts --treeshake --minify","test":"vitest run","test:watch":"vitest","lint":"eslint src","typecheck":"tsc --noEmit","format":"prettier --write src,tests"},"devDependencies":{"@edgeandnode/eslint-config":"^1.3.0","@typescript-eslint/parser":"^5.52.0","eslint":"^8.34.0","prettier":"^2.8.4","typescript":"^5.0.0-beta","vitest":"^0.28.5","tsup":"^6.6.3"},"dependencies":{"@types/mdast":"^3.0.10","@types/node":"^18.13.0","cac":"^6.7.14","dotenv":"^16.0.3","fs":"0.0.1-security","gpt3-tokenizer":"^1.1.5","node-fetch":"^3.3.0","openai":"^3.1.0","pinecone-client":"^1.0.1","remark":"^14.0.2","remark-frontmatter":"^4.0.1","remark-gfm":"^3.0.1","remark-mdx":"^2.3.0","remark-smartypants":"^2.0.0","tiny-glob":"^0.2.9","ts-node":"^10.9.1","unified":"^10.1.2"},"gitHead":"22c45a049131eb9edec736e627a0709f7614a047","_id":"@beerose/semantic-search@1.0.0-beta.2","_nodeVersion":"19.6.0","_npmVersion":"9.4.0","dist":{"integrity":"sha512-CP6WOBJ5bvJAF4GQ8AIT0zG1YYKXHceyo6Q60LoIqH/autawcJ+++IBm2q5jpWa2z+lYQPYskvAHgrdzg3roSg==","shasum":"9aa186e6af4b2905f7f7da562bc48f0c49809e4f","tarball":"https://registry.npmjs.org/@beerose/semantic-search/-/semantic-search-1.0.0-beta.2.tgz","fileCount":11,"unpackedSize":29944,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAN8eoIpT0wAtkdMIzN7edUXDf8tU4faIHlv45uN3cguAiBDIv+v3j+JbZqoayZm2hgzIZpgnuv0i3JRaDUXVzhJJg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj7oQpACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoI5w//V4NmCzGZkYgIX4jR6w4b2F9bjYMjpEkBax8yOj0zc1BG3TS8\r\nmUDlFafh7+bMV6XK+IfqCD3/RNC8B3FvzY39TGJzOhuT3NypIXnY9X7+uN9n\r\ng4nzG2bR6KjOgtyABHKpKmCuQL2Wl8tYfKQ1k1e2efooB8fLfM1T2W5GxIBP\r\nmxiYBYL6vW354KOuMyLM6JyCNKi7HfTamgTawLyyM/6ZFMiDEgUjW0CfkqbX\r\nBqLzyOlEc8rH0aokq411EFe2uCwvjPYAsDOuFrcyYoMaBf9xkBWXvDlxXfEk\r\nOtZP3guE7n4XJoEujXPa3+xYAtEuLaPDEcbgJPRsBINZTAfxbrJm8Lmb+yx6\r\n68cpXflEtLJFrFY4qR9CX+DwutndW4irky80Qjg9WOSa8gEULqL3WvIk06/7\r\nj/ebRahJRE+6JdpZWbDp2cfp2X6GytyK00/eQRruj2v4eMmisVdHMdFLLyon\r\n7TnBLbwWZB1TO8LI+iYljXLE75mJ4UgLDwRrzooaQFJ0KCdEindKWnE8ONT0\r\nx0FfVq6h3u3X+dvhYpLFeHOpFmTSvAAJI6e6Vj/qykrs3ah0SSGnCzF0oXHh\r\nAoL/yAaXs+8kfxpg/1m6gBAh5eEcTuqu3LHR7RKnRJp0Tgy1twtD80i9Lvi9\r\nus0+F+flWY22w5niiReeA6D8E27cAriZ9zY=\r\n=FW3p\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"anemone","email":"alexsandra.sikora@gmail.com"},"directories":{},"maintainers":[{"name":"anemone","email":"alexsandra.sikora@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/semantic-search_1.0.0-beta.2_1676575785231_0.15203166096683884"},"_hasShrinkwrap":false},"1.0.0-beta.3":{"name":"@beerose/semantic-search","license":"MIT","version":"1.0.0-beta.3","description":"An OpenAI-powered CLI to build a semantic search index from your MDX files.","author":{"name":"Aleksandra Sikora","email":"alexsandra.sikora@gmail.com","url":"https://aleksandra.codes"},"homepage":"https://github.com/beerose/semantic-search/blob/main/README.md","bin":{"semantic-search":"bin/cli.js"},"type":"commonjs","main":"dist/index.js","types":"dist/index.d.ts","publishConfig":{"access":"public"},"keywords":["semantic","search","cli","mdx","pinecone","openai"],"scripts":{"build":"tsup src/index.ts src/bin/cli.ts --format cjs,esm --dts --treeshake --minify","test":"vitest run","test:watch":"vitest","lint":"eslint src","typecheck":"tsc --noEmit","format":"prettier --write src,tests"},"devDependencies":{"@types/mdast":"^3.0.10","@types/node":"^18.13.0","@edgeandnode/eslint-config":"^1.3.0","@typescript-eslint/parser":"^5.52.0","eslint":"^8.34.0","prettier":"^2.8.4","typescript":"^5.0.0-beta","vitest":"^0.28.5","tsup":"^6.6.3"},"dependencies":{"cac":"^6.7.14","dotenv":"^16.0.3","gpt3-tokenizer":"^1.1.5","node-fetch":"^3.3.0","openai":"^3.1.0","pinecone-client":"^1.0.1","remark":"^14.0.2","remark-frontmatter":"^4.0.1","remark-gfm":"^3.0.1","remark-mdx":"^2.3.0","remark-smartypants":"^2.0.0","tiny-glob":"^0.2.9","ts-node":"^10.9.1","unified":"^10.1.2"},"gitHead":"a0f88e93e34bf172bbaed11aaf42cf7f345062fc","_id":"@beerose/semantic-search@1.0.0-beta.3","_nodeVersion":"19.6.0","_npmVersion":"9.4.0","dist":{"integrity":"sha512-p0uEclS+oRRFkTxaXrWqAflXTls4RQS+ia+2alsgPxq7Gf4GlOs7GqIYMd0eOEOoM+n7CmaM3YNLpbNpyJa0aA==","shasum":"61d25888836ed1a3f1095ea71d4f4a0c23471dd9","tarball":"https://registry.npmjs.org/@beerose/semantic-search/-/semantic-search-1.0.0-beta.3.tgz","fileCount":11,"unpackedSize":29918,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD9apPt9CPtsQeieAhV+AsHEB9utZjmQVK34UE13IcWKQIhANUmxTJJwKpqMtNMT2lN3zhO+oCuKP4ohzDt9usnqM5j"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj7o7DACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpG+Q//ZEaacqpkaRBRFmURq3M30BaR1IsGu9SsbgG0QoryP8CgSRch\r\nnmLIiR+mk80G7172V4vhbr+37PKvpf1icKd0GceyebxCPqM7epbZFDoJVD1E\r\nKttvV76UYzYV5fB8pUJnESitRO7SYQoy5Cu45EmgNmfaIK52vxD2VVfGPTnW\r\ntBkLoanugxyOXyY8U3+qTR+liddeUlG4CXJnL3KoSp7F0zjudNgz/MFlro6E\r\nntYWDuq4PAgcP1TDl6NdZtnNkCw9FqpBHqSN2pYs65ehcICAS7UAuT82Twb2\r\nYsAfDTfBzY3yf43BvQJLnP2K/37RCJGy++4brZdtI5Y/C6EK4BOF4INF9Jra\r\nmGjNGZF7uTT8IOUzj8yM0NC4q5NI7xBepEHf/QKi3tvp1PDoBmvyTRqHx7vK\r\nEpMJHu8uWpVapprZWsHxnaYpA+1N+0D6zbFoShV3G6/jGey+Sf7+66z+l6Op\r\nEGb5eMB1YDrDeTbPTyvfyyMZ1TpFbYwi0vUiqo5CrdieT3HySSarcjMXSTqh\r\nVKpPhQc7cXCYGJ6v+z8q/nJHj/ucw6e/fcCG2H7xwdNvwKcC+BWy7inZ1ajS\r\nsQ2j3sL5VzKVzDCephYbsvJHqb2Usw5JeXnyOoQptgjtEwo+sw25DZEcEj5h\r\nrsp+K9849UvdrtcckOYr651p6Kp4izG4KSU=\r\n=XQ9B\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"anemone","email":"alexsandra.sikora@gmail.com"},"directories":{},"maintainers":[{"name":"anemone","email":"alexsandra.sikora@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/semantic-search_1.0.0-beta.3_1676578499427_0.09478875220617611"},"_hasShrinkwrap":false},"1.0.0-beta.4":{"name":"@beerose/semantic-search","license":"MIT","version":"1.0.0-beta.4","description":"An OpenAI-powered CLI to build a semantic search index from your MDX files.","author":{"name":"Aleksandra Sikora","email":"alexsandra.sikora@gmail.com","url":"https://aleksandra.codes"},"homepage":"https://github.com/beerose/semantic-search/blob/main/README.md","bin":{"semantic-search":"bin/cli.js"},"type":"commonjs","main":"dist/index.js","types":"dist/index.d.ts","publishConfig":{"access":"public"},"keywords":["semantic","search","cli","mdx","pinecone","openai"],"scripts":{"build":"tsup src/index.ts src/bin/cli.ts --format cjs,esm --dts --treeshake --minify","test":"vitest run","test:watch":"vitest","lint":"eslint src","typecheck":"tsc --noEmit","format":"prettier --write src,tests"},"devDependencies":{"@types/mdast":"^3.0.10","@types/node":"^18.13.0","@edgeandnode/eslint-config":"^1.3.0","@typescript-eslint/parser":"^5.52.0","eslint":"^8.34.0","prettier":"^2.8.4","typescript":"^5.0.0-beta","vitest":"^0.28.5","tsup":"^6.6.3"},"dependencies":{"cac":"^6.7.14","dotenv":"^16.0.3","gpt3-tokenizer":"^1.1.5","node-fetch":"^3.3.0","openai":"^3.1.0","pinecone-client":"^1.0.1","remark":"^14.0.2","remark-frontmatter":"^4.0.1","remark-gfm":"^3.0.1","remark-mdx":"^2.3.0","remark-smartypants":"^2.0.0","tiny-glob":"^0.2.9","ts-node":"^10.9.1","unified":"^10.1.2"},"gitHead":"52ecb7c44fa4b17a8250cf8c59e7abd49e99e6d9","_id":"@beerose/semantic-search@1.0.0-beta.4","_nodeVersion":"19.6.0","_npmVersion":"9.4.0","dist":{"integrity":"sha512-Hmr6b0ASaGoSts//ErkdSeQ2ryWO8PdBqsWwS16vT4BC7XRDTbZJ5JQgcscWF+64RfvbNdeY3c8YEcVLT/S4dQ==","shasum":"49ff8d35dcdf2fd520aac07750fdd62afef61213","tarball":"https://registry.npmjs.org/@beerose/semantic-search/-/semantic-search-1.0.0-beta.4.tgz","fileCount":13,"unpackedSize":41171,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCWd4O9o/VftQTWRrurmY4wvNxma7gA2PhOa2F77CD3dwIgW3ovRySKTkjhI/fbsoS/VyDdYSdlqFAeI838LsxX88A="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj70PjACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrwfA/6AjrrHC13Xny/jYuoeFCpbMCrbBzxbM+NRuFPIbKq+GfpQqU+\r\n+OjRANnonHlikMkspw2Vo/HR4KjOqKlAnQjjczXOU/1Op60MNG4pQa2uXwr1\r\nULYh24SE/rcKbguZLtPDr8t1KFfB3mu20jrg5CirCmntmhR4zR+G7amb76xY\r\nzfqPmP13rB7qSRQoq6mNzJaQS/nbm1UBgpullEuU42a/pxH6uxzXRJ+NYFdj\r\nMWGDcVpXIWqJIUJTQdxLcnb2N9XD6qF0AIfwt5HtzAFxiRJu2zUZ5zkS/Gj8\r\ni+Wy1lyaJVQNfFvxB3gpH8rXprUxC9+9NhCVoH60huTU/4JvbsC+UQScS916\r\nQzmQTG1edMNmgEzILJ3AeOU07zM5jE7kHvxfMAjjAZtHFRBulLlHTnYvIAg/\r\nXmJbeiXc+h5P2w3kYjjMm7akJAcCDZni3gQjd8sLcAAG6RYTRho/79oGeI1F\r\nlxCr7W+6x/1Yn6u9XKyzid1DeIz/TCzaF802otRUEoBMau9gSFx4j7dxqMeJ\r\nn+LPktDVggK5Z4CrxJtQNOuyv+l2Uxj1hxx5NxThNS7KhM03T1ngDiW/clIE\r\nFxm3iNobDaFmhTziIkqZo94oQ2mCJNry/onGQbJn8wy66gYjjdy7HcS441Ev\r\n9lqch7JHXhmp3kKPjlIzZwVXgxyIa60+OgQ=\r\n=hcZF\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"anemone","email":"alexsandra.sikora@gmail.com"},"directories":{},"maintainers":[{"name":"anemone","email":"alexsandra.sikora@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/semantic-search_1.0.0-beta.4_1676624866845_0.9530960736030147"},"_hasShrinkwrap":false},"1.0.0-beta.5":{"name":"@beerose/semantic-search","license":"MIT","version":"1.0.0-beta.5","description":"An OpenAI-powered CLI to build a semantic search index from your MDX files.","author":{"name":"Aleksandra Sikora","email":"alexsandra.sikora@gmail.com","url":"https://aleksandra.codes"},"homepage":"https://github.com/beerose/semantic-search/blob/main/README.md","bin":{"semantic-search":"bin/cli.js"},"type":"commonjs","main":"dist/index.js","types":"dist/index.d.ts","publishConfig":{"access":"public"},"keywords":["semantic","search","cli","mdx","pinecone","openai"],"scripts":{"build":"tsup src/index.ts src/bin/cli.ts --format cjs,esm --dts --treeshake --minify","test":"vitest run","test:watch":"vitest","lint":"eslint src","typecheck":"tsc --noEmit","format":"prettier --write src,tests"},"devDependencies":{"@types/mdast":"^3.0.10","@types/node":"^18.13.0","@edgeandnode/eslint-config":"^1.3.0","@typescript-eslint/parser":"^5.52.0","eslint":"^8.34.0","prettier":"^2.8.4","typescript":"^5.0.0-beta","vitest":"^0.28.5","tsup":"^6.6.3"},"dependencies":{"cac":"^6.7.14","dotenv":"^16.0.3","gpt3-tokenizer":"^1.1.5","openai":"^3.1.0","pinecone-client":"^1.0.1","remark":"^14.0.2","remark-frontmatter":"^4.0.1","remark-gfm":"^3.0.1","remark-mdx":"^2.3.0","remark-smartypants":"^2.0.0","tiny-glob":"^0.2.9","unified":"^10.1.2"},"gitHead":"fe31920a0f54047acebb923ba906f5b71f99a7de","_id":"@beerose/semantic-search@1.0.0-beta.5","_nodeVersion":"19.6.0","_npmVersion":"9.4.0","dist":{"integrity":"sha512-Q0YDCstWopp74nCSvAkO+qHNmTazSmvUaYOnXi2yvYmgQKCs5ysyMPrdZf9ugoyCWQD0wV9f8H9i0OFLPfU7LA==","shasum":"719b42aa8f78d2602f839f2d38c1a274e57eeba5","tarball":"https://registry.npmjs.org/@beerose/semantic-search/-/semantic-search-1.0.0-beta.5.tgz","fileCount":13,"unpackedSize":40702,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDuloZKL4Z6rJ4RGFyVJybuAcuOVVp4yZJZ9KSW40jGUwIgTvZOS5YLzJYNkVxJsRC+kiE1Hp9MDR8dTSpw779zLzY="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj73JuACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmotOg/7BFtCcjmmt3RUywQOSaMjOkInFob0xRmKg4iDw6FQDMFXggFt\r\niSgrbK0A53BR9Q4L6/UR/xURs68d2SJKPGnaLHpO4j7zVVdYcGOtrVGA1XDw\r\nKjTTv/LY1B7bZFvsmp5qb62e7cQB1fPH6Z6JFy2NMNrgcI4tOVwiFsAEfcsa\r\nXJGxrFJNn0blI2SlMZLlzaiGRg1iQIEG94yAHPuLQbRTMm41X1DNNjYWwMBm\r\nKBFlLpSobeKm49Gpe4j3pnUy4VXGsVE2SXDMgHpIpcgqvDc95z7qiLHmi8W5\r\nC073Wn/zsY80Y2IlQexUl3uoe9qh7EmrfU2jfNy6ZTnql9/xlrrBplvFgcm9\r\nvXrDEh3AsOOYdANepgXHCXist0pCXgZSaA8JHBTXQAOtSq65Xt8GWW8Q/BUt\r\ngD/Wd9utA8VuoN5Afjonwocdtxza1uMXg9YkDt83kWROOZXcEp8SGyH/f7T2\r\nARkiqPyPvccBT2Ef99UyuFUkqIhVn/eKQrt1m9jLKbNAGkAyIhqrw4vlYcg4\r\nARNo4nVK7Eevj1rsCsmhLWxay4D0ZCADCmraHi8Ahd2V2XmbYM/t9dqye6ua\r\nOufpeunmxT+otHl6AUfd2B7XQ5ZmCaJ76awW+sMtoFHoYQRYSTCgzAjbwoQb\r\nwa6z3N88x2xBNL88ufIvOF0Cu6020PxI6uk=\r\n=ckp6\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"anemone","email":"alexsandra.sikora@gmail.com"},"directories":{},"maintainers":[{"name":"anemone","email":"alexsandra.sikora@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/semantic-search_1.0.0-beta.5_1676636782708_0.24508788220523736"},"_hasShrinkwrap":false},"1.0.0-beta.6":{"name":"@beerose/semantic-search","license":"MIT","version":"1.0.0-beta.6","description":"An OpenAI-powered CLI to build a semantic search index from your MDX files.","author":{"name":"Aleksandra Sikora","email":"alexsandra.sikora@gmail.com","url":"https://aleksandra.codes"},"homepage":"https://github.com/beerose/semantic-search/blob/main/README.md","bin":{"semantic-search":"bin/cli.js"},"type":"commonjs","main":"dist/index.js","types":"dist/index.d.ts","publishConfig":{"access":"public"},"keywords":["semantic","search","cli","mdx","pinecone","openai"],"scripts":{"build":"tsup src/index.ts src/bin/cli.ts --format cjs,esm --dts --treeshake --minify","test":"vitest run","test:watch":"vitest","lint":"eslint src","typecheck":"tsc --noEmit","format":"prettier --write src,tests"},"devDependencies":{"@edgeandnode/eslint-config":"^1.3.0","@types/mdast":"^3.0.10","@types/node":"^18.13.0","@typescript-eslint/parser":"^5.52.0","eslint":"^8.34.0","prettier":"^2.8.4","tsup":"^6.6.3","typescript":"^5.0.0-beta","vitest":"^0.28.5"},"dependencies":{"@clack/core":"^0.1.7","@clack/prompts":"^0.4.3","cac":"^6.7.14","dotenv":"^16.0.3","gpt3-tokenizer":"^1.1.5","openai":"^3.1.0","picocolors":"^1.0.0","pinecone-client":"^1.0.1","remark":"^14.0.2","remark-frontmatter":"^4.0.1","remark-gfm":"^3.0.1","remark-mdx":"^2.3.0","remark-smartypants":"^2.0.0","tiny-glob":"^0.2.9","unified":"^10.1.2"},"gitHead":"41073cc87544429d85013e65859874c846acdfc3","_id":"@beerose/semantic-search@1.0.0-beta.6","_nodeVersion":"19.6.0","_npmVersion":"9.4.0","dist":{"integrity":"sha512-SF0ocl4NonO7yiytNhphAOaZwuuhsiWrzhkCn+66UsiNV85vn7CoZl7W4H9KR8V6A9VSrmxYrdPmv75ldlsTZg==","shasum":"3ea5381e4d137a3bddc13ca6dc07116a056fd76b","tarball":"https://registry.npmjs.org/@beerose/semantic-search/-/semantic-search-1.0.0-beta.6.tgz","fileCount":11,"unpackedSize":38463,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGpoOBvoAzTIYFyuR/qlb+ItE8nnvRTXNppDG7xxJ5inAiB2nQd6yCAQX/eAyafJTiYGgRfdopCYM7StCyALSVzBaQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj79tRACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpxBA//Q89KZNubBHGKoMdd3fYSwHVXacjb85t8ibS86NgmQhDH9Da1\r\nSdi5cLBNnYFSvYmxWxvxgAj+ulhV0C9dmKIvfCyF+YVbD1T3fdDL22u6cRtm\r\nIEEgquDd2Hbk+bcC2QFuHSX0/6iI9lajoD849NXLDWR9v+f9+WxlTPWieMYB\r\nO6Efu1B85fJmTqb02/2vLkQVHcXQmscWDhiZ3y8d5UdwOAEbCufGKBX5doGV\r\nfelADq1x2uq8FNn7Yz6GPSD/reezu8wLiBIlYqrB4au87OxH8G2N8ezIA+L4\r\nygxfX8FAWDsh4E4w3r8aDEkMl3dyQVCBMe4ZVz4FTrB3nuwz1vrz/WYQOBhF\r\n7+nkuOatTc2orzFzGKZoYKgq5nQtNhfJeSdfaMXM/tpWBGJLYVXZcGsaQP1S\r\nVsnwQMwd55sQC9HWTr8sa6s6ROQWCsUyy3hUmF/MIOPO9ZtJi4Jes2VcKd12\r\n9EvWq88XHHIwU57+z4dWLP1ySQ4dI663K4n04pqeLr5RFiO14r4wZvE8ILbd\r\nSXfWniSvxRYu3L5xvDs/g62ECn7rFI/6Pgmm14CYkhgrDZuOfAlfz5VQmwhY\r\nubncUIyz+n/xF7iFThwsEJRU8ghu3iaYB9ijN6BpOHObsb47Ak/Ew6RCxTIF\r\nGVkj+VOJQCtZi2rdx6z1X7G6Hd16ImF5z2I=\r\n=YyVI\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"anemone","email":"alexsandra.sikora@gmail.com"},"directories":{},"maintainers":[{"name":"anemone","email":"alexsandra.sikora@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/semantic-search_1.0.0-beta.6_1676663633279_0.9240017515013936"},"_hasShrinkwrap":false},"1.0.0":{"name":"@beerose/semantic-search","license":"MIT","version":"1.0.0","description":"An OpenAI-powered CLI to build a semantic search index from your MDX files.","author":{"name":"Aleksandra Sikora","email":"alexsandra.sikora@gmail.com","url":"https://aleksandra.codes"},"homepage":"https://github.com/beerose/semantic-search/blob/main/README.md","bin":{"semantic-search":"bin/cli.js"},"type":"commonjs","main":"dist/index.js","types":"dist/index.d.ts","publishConfig":{"access":"public"},"keywords":["semantic","search","cli","mdx","pinecone","openai"],"scripts":{"build":"tsup src/index.ts src/bin/cli.ts --format cjs,esm --dts --treeshake --minify","test":"vitest run","test:watch":"vitest","lint":"eslint src","typecheck":"tsc --noEmit","format":"prettier --write src,tests"},"devDependencies":{"@edgeandnode/eslint-config":"^1.3.0","@types/mdast":"^3.0.10","@types/node":"^18.13.0","@typescript-eslint/parser":"^5.52.0","eslint":"^8.34.0","prettier":"^2.8.4","tsup":"^6.6.3","typescript":"^5.0.0-beta","vitest":"^0.28.5"},"dependencies":{"@clack/core":"^0.1.7","@clack/prompts":"^0.4.3","cac":"^6.7.14","dotenv":"^16.0.3","gpt3-tokenizer":"^1.1.5","openai":"^3.1.0","picocolors":"^1.0.0","pinecone-client":"^1.0.1","remark":"^14.0.2","remark-frontmatter":"^4.0.1","remark-gfm":"^3.0.1","remark-mdx":"^2.3.0","remark-smartypants":"^2.0.0","tiny-glob":"^0.2.9","unified":"^10.1.2"},"gitHead":"63634821eb99039dc67a62c103b875e4a7f6bd96","_id":"@beerose/semantic-search@1.0.0","_nodeVersion":"19.6.0","_npmVersion":"9.4.0","dist":{"integrity":"sha512-7SgIpFAV/wU1itGqFbqz4UVJyXhYQBseuNCKCP1bsvpwfA5YSNbetkgLdWUQjNcQaZkpUbO4YhY9B4EPufJ72Q==","shasum":"5dc15c8b93dfa35e0609a8494ec852571e3da80a","tarball":"https://registry.npmjs.org/@beerose/semantic-search/-/semantic-search-1.0.0.tgz","fileCount":11,"unpackedSize":38545,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGrNYwAHeQXWp1sR3v/NY9KerYWoYPbaQGlZSPECRXkbAiBTcz39psMbAKQtirZWrg5GHzdiC8Xx2v51vyRLVct2aw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj793wACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp6mA/9EuxYBxfaLttKGGiyy7wXUpgvY2QchKcBUg1P1/Hup6uXJKCo\r\nzjnRKziXp9I2B413rF11GtNzRzV5BbM/fgjmYz9+20nJR6widDUY843sBwSS\r\nmOQ71WrjDJ8qMJUrKzvyo8Bte4R0pIMfU7znYSZ6LnXsAJI/K9T/ypxYi5wG\r\nw0dMREGB8wpUJyV8FZLJib43IT2b/ilu1p6x8Lh8dI79Q10lOjSnQHYyA/49\r\nfq2C6dpYCL8riaiU7aqt4Y4qIrIRMgyVemYEENqkCotJiW2CJKwOOgth0pLF\r\nM8JLIAGiH9yw49Vqm4fw/+KYGN+LUMxMwZoTWg87W83lJ2mf5eXGFDBtIVtb\r\nMSBqMY7ANXH+sW9jbwYQeLIUKCXA63H/MbtqSZhvH0rWuquJaHjThvYlwQMI\r\nYR5hRVZBVMq7jlgurZKIK6Oj6dv8xCqbWEF8hkFTK1Xfd53Pflwmfk5vl1H1\r\n1BGj4bwEqxHpBtu7QpBA7A42yjoLxBgzMOa8kyi23s/Yc7laFWAzhXI5Fkca\r\ncIW7Hd9go+Rvau3RigyO/pao19TGIBP4yXHkEM2eI9vsEMTdcdjB4JJ/mHtC\r\nt262RmhPxzbXg3El7s7suNf37wT905L2e2q+1D8kMb8TBcxzzrU6lnO3e1vg\r\nZTT3JmSNOC1yer9oTg7XrGI2l1dtk3zSdJ0=\r\n=eOIw\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"anemone","email":"alexsandra.sikora@gmail.com"},"directories":{},"maintainers":[{"name":"anemone","email":"alexsandra.sikora@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/semantic-search_1.0.0_1676664303855_0.8659689652022444"},"_hasShrinkwrap":false}},"time":{"created":"2023-02-15T16:20:02.576Z","1.0.0-beta.1":"2023-02-15T16:20:02.976Z","modified":"2023-02-17T20:05:04.195Z","1.0.0-beta.2":"2023-02-16T19:29:45.488Z","1.0.0-beta.3":"2023-02-16T20:14:59.589Z","1.0.0-beta.4":"2023-02-17T09:07:46.988Z","1.0.0-beta.5":"2023-02-17T12:26:22.892Z","1.0.0-beta.6":"2023-02-17T19:53:53.446Z","1.0.0":"2023-02-17T20:05:04.093Z"},"maintainers":[{"name":"anemone","email":"alexsandra.sikora@gmail.com"}],"description":"An OpenAI-powered CLI to build a semantic search index from your MDX files.","homepage":"https://github.com/beerose/semantic-search/blob/main/README.md","keywords":["semantic","search","cli","mdx","pinecone","openai"],"author":{"name":"Aleksandra Sikora","email":"alexsandra.sikora@gmail.com","url":"https://aleksandra.codes"},"license":"MIT","readme":"# @beerose/semantic-search\n\nAn OpenAI-powered CLI to build a semantic search index from your MDX files. It\nallows you to perform complex searches across your content and integrate it with\nyour platform.\n\n## 🧳 Prerequisites\n\nThis project uses [OpenAI](https://openai.com/api) to generate vector embeddings\nand [Pinecone](https://pinecone.io/) to host the embeddings, which means you\nneed to have accounts in OpenAI and Pinecone to use it.\n\n<details>\n<summary>Setting up a Pinecone project</summary>\n\nAfter creating an account in Pinecone, go to the dashboard and click on the\n`Create Index` button:\n\n![CleanShot 2023-02-17 at 16 10 32@2x](https://user-images.githubusercontent.com/9019397/219693945-6d656f53-6dc2-4010-8ee8-f9d3e69913a1.png)\n\nFill the form with your new index name (e.g. your blog name) and set the number\nof dimensions to 1536:\n\n![CleanShot 2023-02-17 at 16 11 54@2x](https://user-images.githubusercontent.com/9019397/219693863-ccaa2105-db44-4838-b94b-40689945c8f2.png)\n\n</details>\n\n## 🚀 CLI Usage\n\n<details>\n<summary>How to get your env keys from Pinecone and OpenAI?</summary>\n\n**Pinecone**\n\n![CleanShot 2023-02-17 at 16 15 32@2x](https://user-images.githubusercontent.com/9019397/219693780-bee0e02b-3961-4a92-b505-8076ef67295e.png)\n![CleanShot 2023-02-17 at 16 13 22@2x](https://user-images.githubusercontent.com/9019397/219693831-794c88ce-a763-4415-84f6-08b00c0aab0e.png)\n\n**OpenAI**\n\n![CleanShot 2023-02-17 at 16 18 00@2x](https://user-images.githubusercontent.com/9019397/219693739-3c5e0b31-425b-4cef-8aa9-066dd24d9ab2.png)\n\n</details>\n\nThe CLI requires four env keys:\n\n```sh\nOPENAI_API_KEY=\n\nPINECONE_API_KEY=\nPINECONE_BASE_URL=\nPINECONE_NAMESPACE=\n```\n\nMake sure to add them before using it!\n\n### 🛠 Commands:\n\n`index <dir>` — processes files with your content and upload them to Pinecone.\n\nExample:\n\n```sh\n$ @beerose/semantic-search index ./posts\n```\n\n`search <query>` — performs a semantic search by a given query.\n\nExample:\n\n```sh\n$ @beerose/semantic-search search \"hello world\"\n```\n\nFor more info, run any command with the `--help` flag:\n\n```sh\n$ @beerose/semantic-search index --help\n$ @beerose/semantic-search search --help\n$ @beerose/semantic-search --help\n```\n\n## ➕ Project integration\n\nYou can use the `semanticQuery` function exported from this library and\nintegrate it with your website or application.\n\nInstall deps:\n\n```sh\n$ pnpm add pinecone-client openai @beerose/semantic-search\n\n# or `yarn add` or `npm i`\n```\n\nAn example usage:\n\n```ts\nimport { PineconeMetadata, semanticQuery } from \"@beerose/semantic-search\";\nimport { Configuration, OpenAIApi } from \"openai\";\nimport { PineconeClient } from \"pinecone-client\";\n\nconst openai = new OpenAIApi(\n  new Configuration({\n    apiKey: process.env.OPENAI_API_KEY,\n  })\n);\n\nconst pinecone = new PineconeClient<PineconeMetadata>({\n  apiKey: process.env.PINECONE_API_KEY,\n  baseUrl: process.env.PINECONE_BASE_URL,\n  namespace: process.env.PINECONE_NAMESPACE,\n});\n\nconst result = await semanticQuery(\"hello world\", openai, pinecone);\n```\n\nHere's an example API route from [aleksandra.codes](https://aleksandra.codes):\nhttps://github.com/beerose/aleksandra.codes/blob/main/api/search.ts\n\n## ✨ How does it work?\n\nSemantic search can understand the meaning of words in documents and return\nresults that are more relevant to the user's intent.\n\nThis tool uses [OpenAI](https://openai.com/) to generate vector embeddings with\na `text-embedding-ada-002` model.\n\n> Embeddings are numerical representations of concepts converted to number\n> sequences, which make it easy for computers to understand the relationships\n> between those concepts.\n> https://openai.com/blog/new-and-improved-embedding-model/\n\nIt also uses [Pinecone](https://pinecone.io/) — a hosted database for vector\nsearch. It lets us perform k-NN searches across the generated embeddings.\n\n### Processing MDX content\n\nThe `@beerose/sematic-search index` CLI command performs the following steps for\neach file in a given directory:\n\n1.  Converts the MDX files to raw text.\n2.  Extracts the title.\n3.  Splits the file into chunks of a maximum of 100 tokens.\n4.  Generates OpenAI embeddings for each chunk.\n5.  Upserts the embeddings to Pinecone.\n\nDepending on your content, the whole process requires a bunch of calls to OpenAI\nand Pinecone, which can take some time. For example, it takes around thirty\nminutes for a directory with ~25 blog posts and an average of 6 minutes of\nreading time.\n\n### Performing semantic searches\n\nTo test the semantic search, you can use `@beerose/sematic-search search` CLI\ncommand, which:\n\n1. Creates an embedding for a provided query.\n2. Sends a request to Pinecone with the embedding.\n\n## 🍿 Demo\n\n![](https://user-images.githubusercontent.com/9019397/219777236-d9c4cbb6-b408-40ca-be22-cd01eefa4e53.gif)\n\n## 📦 What's inside?\n\n```sh\n.\n├── bin\n│   └── cli.js\n├── src\n│   ├── bin\n│   │   └── cli.ts\n│   ├── commands\n│   │   ├── indexFiles.ts\n│   │   └── search.ts\n│   ├── getEmbeddings.ts\n│   ├── isRateLimitExceeded.ts\n│   ├── mdxToPlainText.test.ts\n│   ├── mdxToPlainText.ts\n│   ├── semanticQuery.ts\n│   ├── splitIntoChunks.test.ts\n│   ├── splitIntoChunks.ts\n│   ├── titleCase.ts\n│   └── types.ts\n├── tsconfig.build.json\n├── tsconfig.json\n├── package.json\n└── pnpm-lock.yaml\n```\n\n- `bin/cli.js` — The CLI entrypoint.\n- `src`:\n  - `bin/cli.ts` — Files where you can find CLI commands and settings. This\n    project uses [CAC](https://github.com/cacjs/cac) for building CLIs.\n  - `commands/indexFiles.ts` — A CLI command that handles processing md/mdx\n    content, generating embeddings and uploading vectors to Pinecone.\n  - `command/search.ts` — A semantic search command. It generates an embedding\n    for a given search query and then calls Pinecone for the results.\n  - `getEmbeddings.ts` — Generating embeddings logic. It handles a call to Open\n    AI.\n  - `isRateLimitExceeded.ts` — Error handling helper.\n  - `mdxToPlainText.ts` — Converts MDX files to raw text. Uses remark and a\n    custom `remarkMdxToPlainText` plugin (also defined in that file).\n  - `semanticQuery.ts` — Core logic for performing semantic searches. It's being\n    used in `search` command, and also it's exported from this library so that\n    you can integrate it with your projects.\n  - `splitIntoChunks.ts` — Splits the text into chunks with a maximum of 100\n    tokens.\n  - `titleCase.ts` — Extracts a title from a file path.\n  - `types.ts` — Types and utilities used in this project.\n- `tsconfig.json` - TypeScript compiler configuration.\n- `tsconfig.build.json` - TypeScript compiler configuration used for\n  `pnpm build`.\n\nTests:\n\n- `src/mdxToPlainText.test.ts`\n- `src/splitIntoChunks.test.ts`\n\n## 👩‍💻 Local development\n\nInstall deps and build the project:\n\n```sh\npnpm i\n\npnpm build\n```\n\nRun the CLI locally:\n\n```sh\nnode bin/cli.js\n```\n\n## 🧪 Running tests\n\n```sh\npnpm test\n```\n\n## 🤝 Contributing\n\nContributions, issues and feature requests are welcome.<br /> Feel free to check\n[issues page](https://github.com/beerose/semantic-search/issues) if you want to\ncontribute.<br />\n\n## 📝 License\n\nCopyright © 2023 [Aleksandra Sikora](https://github.com/beerose).<br /> This\nproject is [MIT](https://github.com/beerose/semantic-search/blob/master/LICENSE)\nlicensed.\n","readmeFilename":"README.md"}