{"id":"647d9bbabf638c001c68092b","title":"pVectorSearch2023-06-05","image":"https://gyazo.com/27e93ce643025450fc3930f36cbffb46/raw","descriptions":["prev [pVectorSearch2023-06-02] parent [pVectorSearch]","NextJS","[https://nextjs.org/docs/getting-started/installation Getting Started: Installation | Next.js]","`$ npx create-next-app@latest`","TypeScript使いますかとか聞いてくれる"],"user":{"id":"582e63d27c56960011aff09e"},"lastUpdateUser":{"id":"582e63d27c56960011aff09e"},"users":[],"pin":0,"views":66,"linked":6,"commitId":"647ee167a245e1001c45b891","created":1685953468,"updated":1686036839,"accessed":1781254977,"snapshotCreated":1686036796,"pageRank":12,"lastAccessed":null,"linesCount":162,"charsCount":4549,"helpfeels":[],"persistent":true,"lines":[{"id":"647d9bbabf638c001c68092b","text":"pVectorSearch2023-06-05","userId":"582e63d27c56960011aff09e","created":1685953468,"updated":1685953473},{"id":"647d9bc2aff09e0000543218","text":"prev [pVectorSearch2023-06-02] parent [pVectorSearch]","userId":"582e63d27c56960011aff09e","created":1685953474,"updated":1686025313},{"id":"647d9bc2aff09e0000543219","text":"","userId":"582e63d27c56960011aff09e","created":1685953476,"updated":1685953476},{"id":"647d9ccdaff09e0000054ab5","text":"NextJS","userId":"582e63d27c56960011aff09e","created":1685953742,"updated":1685953795},{"id":"647d9e08aff09e000054321c","text":"\t[https://nextjs.org/docs/getting-started/installation Getting Started: Installation | Next.js]","userId":"582e63d27c56960011aff09e","created":1685954057,"updated":1685954067},{"id":"647d9e13aff09e000054321d","text":"\t\t$ npx create-next-app@latest","userId":"582e63d27c56960011aff09e","created":1685954067,"updated":1685954071},{"id":"647d9d03aff09e0000054ab7","text":"\t TypeScript使いますかとか聞いてくれる","userId":"582e63d27c56960011aff09e","created":1685953795,"updated":1685954072},{"id":"647d9d03aff09e0000054ab8","text":"\t\t`vecsearch-service`って名前にした","userId":"582e63d27c56960011aff09e","created":1685953795,"updated":1685954082},{"id":"647d9e32aff09e0000054abe","text":"\t\tこの名前のフォルダが作られてGit管理される","userId":"582e63d27c56960011aff09e","created":1685954099,"updated":1685954114},{"id":"647d9e2baff09e0000054abd","text":"\tGithubに入れる","userId":"582e63d27c56960011aff09e","created":1685954091,"updated":1685954119},{"id":"647d9d93aff09e000054321a","text":"　\t>push an existing repository from the command line","userId":"582e63d27c56960011aff09e","created":1685953939,"updated":1685954121},{"id":"647d9e4aaff09e0000054abf","text":"　\tprivateにした","userId":"582e63d27c56960011aff09e","created":1685954123,"updated":1685954128},{"id":"647dae2eaff09e0000054ac8","text":"","userId":"582e63d27c56960011aff09e","created":1685958191,"updated":1685958191},{"id":"647d9d03aff09e0000054ab9","text":"Vercel","userId":"582e63d27c56960011aff09e","created":1685953795,"updated":1685953799},{"id":"647d9e54aff09e0000054ac1","text":"　ダッシュボードにログインする","userId":"582e63d27c56960011aff09e","created":1685954133,"updated":1685954138},{"id":"647d9e5baff09e0000054ac2","text":"　先ほどのリポジトリが表示されてるので選んでデプロイ","userId":"582e63d27c56960011aff09e","created":1685954139,"updated":1685958202},{"id":"647d9d06aff09e0000054aba","text":"\tデプロイできた","userId":"582e63d27c56960011aff09e","created":1685953799,"updated":1685954226},{"id":"647d9eaeaff09e000054321e","text":"\tあー、`https://vecsearch-service.vercel.app/`になるのか","userId":"582e63d27c56960011aff09e","created":1685954222,"updated":1685954236},{"id":"647d9d06aff09e0000054abb","text":"\t設定からすぐ変えられる","userId":"582e63d27c56960011aff09e","created":1685953799,"updated":1685954319},{"id":"647d9f0eaff09e000054321f","text":"\t\thttps://nishio-vecsearch.vercel.app/","userId":"582e63d27c56960011aff09e","created":1685954319,"updated":1685954319},{"id":"647d9f1faff09e0000054ac3","text":"便利な時代だなぁ","userId":"582e63d27c56960011aff09e","created":1685954336,"updated":1685954340},{"id":"647d9f24aff09e0000054ac4","text":"","userId":"582e63d27c56960011aff09e","created":1685954340,"updated":1685954340},{"id":"647dae25aff09e0000054ac7","text":"APIを作る","userId":"582e63d27c56960011aff09e","created":1685958182,"updated":1685958185},{"id":"647dab3caff09e0000543220","text":"　[https://nextjs.org/docs/pages/building-your-application/routing/api-routes Routing: API Routes | Next.js]","userId":"582e63d27c56960011aff09e","created":1685957436,"updated":1685958187},{"id":"647dab3eaff09e0000543222","text":"\t`src`がないときの置き場所は、`<project_root>/pages/api/foo.ts`","userId":"582e63d27c56960011aff09e","created":1685957438,"updated":1685958496},{"id":"647dab3caff09e0000543221","text":" code:ts","userId":"582e63d27c56960011aff09e","created":1685957437,"updated":1685958107},{"id":"647dad7baff09e000054323b","text":"  import { NextApiRequest, NextApiResponse } from \"next\";","userId":"582e63d27c56960011aff09e","created":1685958011,"updated":1685958107},{"id":"647dad7baff09e000054323c","text":"  ","userId":"582e63d27c56960011aff09e","created":1685958011,"updated":1685958107},{"id":"647dad7baff09e000054323e","text":"  const handle = async (_req: NextApiRequest, res: NextApiResponse) => {","userId":"582e63d27c56960011aff09e","created":1685958011,"updated":1685958107},{"id":"647dad7baff09e000054323f","text":"    res.status(200).json({ data: \"hello world\" });","userId":"582e63d27c56960011aff09e","created":1685958011,"updated":1685958107},{"id":"647dad7baff09e0000543250","text":"  };","userId":"582e63d27c56960011aff09e","created":1685958011,"updated":1685958107},{"id":"647dad7baff09e0000543251","text":"  export default handle;","userId":"582e63d27c56960011aff09e","created":1685958011,"updated":1685958107},{"id":"647dad7baff09e0000543252","text":" OK","userId":"582e63d27c56960011aff09e","created":1685958011,"updated":1685958107},{"id":"647dadaeaff09e0000543254","text":"　うまく動かなくて混乱したがGPT-4に聞いたら「サーバを再起動してみろ」と言われたので再起動したら動いた、便利な時代","userId":"582e63d27c56960011aff09e","created":1685958062,"updated":1685958172},{"id":"647dae1caff09e0000054ac5","text":"","userId":"582e63d27c56960011aff09e","created":1685958173,"updated":1685958173},{"id":"647daf66aff09e0000054ac9","text":"他のAPIを叩くAPI","userId":"582e63d27c56960011aff09e","created":1685958502,"updated":1685958511},{"id":"647daf71aff09e0000054aca","text":" とりあえずScrapboxAPIで試す","userId":"582e63d27c56960011aff09e","created":1685958513,"updated":1685958532},{"id":"647dae1caff09e0000054ac6","text":"　 https://scrapbox.io/api/pages/nishio/pVectorSearch2023-06-05","userId":"582e63d27c56960011aff09e","created":1685958173,"updated":1685958526},{"id":"647dadaeaff09e0000543255","text":"\t\tcode:ts","userId":"582e63d27c56960011aff09e","created":1685958062,"updated":1685962648},{"id":"647dbf99aff09e0000543258","text":"\t\t import { NextApiRequest, NextApiResponse } from \"next\";","userId":"582e63d27c56960011aff09e","created":1685962649,"updated":1685962649},{"id":"647dbf99aff09e0000543259","text":"   import axios from \"axios\";","userId":"582e63d27c56960011aff09e","created":1685962649,"updated":1685962649},{"id":"647dbf99aff09e000054325a","text":"   ","userId":"582e63d27c56960011aff09e","created":1685962649,"updated":1685962649},{"id":"647dbf99aff09e000054325b","text":"   const handle = async (_req: NextApiRequest, res: NextApiResponse) => {","userId":"582e63d27c56960011aff09e","created":1685962649,"updated":1685962649},{"id":"647dbf99aff09e000054325c","text":"     const otherApiUrl =","userId":"582e63d27c56960011aff09e","created":1685962649,"updated":1685962649},{"id":"647dbf99aff09e000054325d","text":"       \"https://scrapbox.io/api/pages/nishio/pVectorSearch2023-06-05\";","userId":"582e63d27c56960011aff09e","created":1685962649,"updated":1685962656},{"id":"647dbf99aff09e000054325e","text":"   ","userId":"582e63d27c56960011aff09e","created":1685962649,"updated":1685962649},{"id":"647dbf99aff09e000054325f","text":"     try {","userId":"582e63d27c56960011aff09e","created":1685962649,"updated":1685962649},{"id":"647dbf99aff09e0000543260","text":"       const response = await axios.get(otherApiUrl, {});","userId":"582e63d27c56960011aff09e","created":1685962649,"updated":1685962666},{"id":"647dbf99aff09e0000543265","text":"       res.status(200).json(response.data);","userId":"582e63d27c56960011aff09e","created":1685962649,"updated":1685962671},{"id":"647dbf99aff09e0000543268","text":"     } catch (error) {","userId":"582e63d27c56960011aff09e","created":1685962649,"updated":1685962649},{"id":"647dbfe1aff09e0000543272","text":"         res","userId":"582e63d27c56960011aff09e","created":1685962721,"updated":1685962721},{"id":"647dbfe1aff09e0000543273","text":"           .status(500)","userId":"582e63d27c56960011aff09e","created":1685962721,"updated":1685962721},{"id":"647dbfe1aff09e0000543274","text":"           .json({ error: \"An error occurred while calling the other API\" });","userId":"582e63d27c56960011aff09e","created":1685962721,"updated":1685962721},{"id":"647dbfe1aff09e0000543275","text":"     }","userId":"582e63d27c56960011aff09e","created":1685962721,"updated":1685962723},{"id":"647dbf99aff09e000054326d","text":"   };","userId":"582e63d27c56960011aff09e","created":1685962649,"updated":1685962674},{"id":"647dbf99aff09e0000543270","text":"   export default handle;","userId":"582e63d27c56960011aff09e","created":1685962649,"updated":1685962649},{"id":"647dbf99aff09e0000543271","text":"\t\tOK","userId":"582e63d27c56960011aff09e","created":1685962649,"updated":1685962728},{"id":"647dbf95aff09e0000543257","text":"","userId":"582e63d27c56960011aff09e","created":1685962646,"updated":1685962646},{"id":"647db7f8aff09e0000054acb","text":"OpenAIを叩く","userId":"582e63d27c56960011aff09e","created":1685960696,"updated":1685960736},{"id":"647dbfe9aff09e0000543276","text":"\tcode:embed.ts","userId":"582e63d27c56960011aff09e","created":1685962729,"updated":1685963961},{"id":"647dc4a2aff09e0000543277","text":"\t import axios from \"axios\";","userId":"582e63d27c56960011aff09e","created":1685963938,"updated":1685963938},{"id":"647dc4a2aff09e0000543278","text":"  ","userId":"582e63d27c56960011aff09e","created":1685963938,"updated":1685963938},{"id":"647dc4a2aff09e0000543279","text":"  export const embed = async (textToEmbed: string) => {","userId":"582e63d27c56960011aff09e","created":1685963938,"updated":1685963938},{"id":"647dc4a2aff09e000054327a","text":"    const model = \"text-embedding-ada-002\";","userId":"582e63d27c56960011aff09e","created":1685963938,"updated":1685963938},{"id":"647dc4a2aff09e000054327b","text":"    const URL = \"https://api.openai.com/v1/embeddings\";","userId":"582e63d27c56960011aff09e","created":1685963938,"updated":1685963938},{"id":"647dc4a2aff09e000054327c","text":"    // Call OpenAI Embedding API","userId":"582e63d27c56960011aff09e","created":1685963938,"updated":1685963938},{"id":"647dc4a2aff09e000054327d","text":"    const openAIResponse = await axios.post(","userId":"582e63d27c56960011aff09e","created":1685963938,"updated":1685963938},{"id":"647dc4a2aff09e000054327e","text":"      URL,","userId":"582e63d27c56960011aff09e","created":1685963938,"updated":1685963938},{"id":"647dc4a2aff09e000054327f","text":"      { input: textToEmbed, model: model },","userId":"582e63d27c56960011aff09e","created":1685963938,"updated":1685963938},{"id":"647dc4a2aff09e0000543280","text":"      {","userId":"582e63d27c56960011aff09e","created":1685963938,"updated":1685963938},{"id":"647dc4a2aff09e0000543281","text":"        headers: {","userId":"582e63d27c56960011aff09e","created":1685963938,"updated":1685963938},{"id":"647dc4a2aff09e0000543282","text":"          Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,","userId":"582e63d27c56960011aff09e","created":1685963938,"updated":1685963938},{"id":"647dc4a2aff09e0000543283","text":"          \"Content-Type\": \"application/json\",","userId":"582e63d27c56960011aff09e","created":1685963938,"updated":1685963938},{"id":"647dc4a2aff09e0000543284","text":"        },","userId":"582e63d27c56960011aff09e","created":1685963938,"updated":1685963938},{"id":"647dc4a2aff09e0000543285","text":"      }","userId":"582e63d27c56960011aff09e","created":1685963938,"updated":1685963938},{"id":"647dc4a2aff09e0000543286","text":"    );","userId":"582e63d27c56960011aff09e","created":1685963938,"updated":1685963938},{"id":"647dc4a2aff09e0000543287","text":"    const openAIEmbedding = openAIResponse.data.data[0].embedding; // assuming the embedding is in this path","userId":"582e63d27c56960011aff09e","created":1685963938,"updated":1685963938},{"id":"647dc4a2aff09e0000543288","text":"    return openAIEmbedding;","userId":"582e63d27c56960011aff09e","created":1685963938,"updated":1685963938},{"id":"647dc4a2aff09e0000543289","text":"  };","userId":"582e63d27c56960011aff09e","created":1685963938,"updated":1685963938},{"id":"647dc4a2aff09e000054328a","text":"\tcode:embed.ts","userId":"582e63d27c56960011aff09e","created":1685963938,"updated":1685963968},{"id":"647dc4c0aff09e000054328c","text":"\t import { NextApiRequest, NextApiResponse } from \"next\";","userId":"582e63d27c56960011aff09e","created":1685963968,"updated":1685963968},{"id":"647dc4c0aff09e000054328d","text":"  import { embed } from \"../../utils/embed\";","userId":"582e63d27c56960011aff09e","created":1685963968,"updated":1685963968},{"id":"647dc4c0aff09e000054328e","text":"  ","userId":"582e63d27c56960011aff09e","created":1685963968,"updated":1685963968},{"id":"647dc4c0aff09e000054328f","text":"  const handle = async (req: NextApiRequest, res: NextApiResponse) => {","userId":"582e63d27c56960011aff09e","created":1685963968,"updated":1685963968},{"id":"647dc4c0aff09e0000543290","text":"    const textToEmbed = req.body.text;","userId":"582e63d27c56960011aff09e","created":1685963968,"updated":1685963968},{"id":"647dc4c0aff09e0000543291","text":"    const openAIEmbedding = await embed(textToEmbed);","userId":"582e63d27c56960011aff09e","created":1685963968,"updated":1685963968},{"id":"647dc4c0aff09e0000543292","text":"    res.status(200).json(openAIEmbedding);","userId":"582e63d27c56960011aff09e","created":1685963968,"updated":1685963968},{"id":"647dc4c0aff09e0000543293","text":"  };","userId":"582e63d27c56960011aff09e","created":1685963968,"updated":1685963968},{"id":"647dc4c0aff09e0000543294","text":"  export default handle;","userId":"582e63d27c56960011aff09e","created":1685963968,"updated":1685963968},{"id":"647dc4c0aff09e0000543295","text":"\tOK","userId":"582e63d27c56960011aff09e","created":1685963968,"updated":1685963979},{"id":"647dc4ccaff09e0000543296","text":"","userId":"582e63d27c56960011aff09e","created":1685963980,"updated":1685963980},{"id":"647db81faff09e0000054acc","text":"Qdrantを叩く","userId":"582e63d27c56960011aff09e","created":1685960736,"updated":1685960744},{"id":"647dc4a8aff09e000054328b","text":"\tcode:search.ts","userId":"582e63d27c56960011aff09e","created":1685963945,"updated":1685965052},{"id":"647dc8fcaff09e0000543297","text":"\t import { NextApiRequest, NextApiResponse } from \"next\";","userId":"582e63d27c56960011aff09e","created":1685965053,"updated":1685965053},{"id":"647dc8fcaff09e0000543298","text":"  import { embed } from \"../../utils/embed\";","userId":"582e63d27c56960011aff09e","created":1685965053,"updated":1685965053},{"id":"647dc8fcaff09e0000543299","text":"  import { QdrantClient } from \"@qdrant/js-client-rest\";","userId":"582e63d27c56960011aff09e","created":1685965053,"updated":1685965053},{"id":"647dc8fcaff09e000054329a","text":"  ","userId":"582e63d27c56960011aff09e","created":1685965053,"updated":1685965053},{"id":"647dc8fcaff09e000054329b","text":"  const handle = async (req: NextApiRequest, res: NextApiResponse) => {","userId":"582e63d27c56960011aff09e","created":1685965053,"updated":1685965053},{"id":"647dc8fcaff09e000054329c","text":"    const textToEmbed = req.body.text;","userId":"582e63d27c56960011aff09e","created":1685965053,"updated":1685965053},{"id":"647dc8fcaff09e000054329d","text":"    const openAIEmbedding = await embed(textToEmbed);","userId":"582e63d27c56960011aff09e","created":1685965053,"updated":1685965053},{"id":"647dc8fcaff09e000054329e","text":"  ","userId":"582e63d27c56960011aff09e","created":1685965053,"updated":1685965053},{"id":"647dc8fcaff09e000054329f","text":"    const COLLECTION_NAME = process.env.QDRANT_COLLECTION_NAME!;","userId":"582e63d27c56960011aff09e","created":1685965053,"updated":1685965053},{"id":"647dc8fcaff09e00005432a0","text":"  ","userId":"582e63d27c56960011aff09e","created":1685965053,"updated":1685965053},{"id":"647dc8fcaff09e00005432a1","text":"    const client = new QdrantClient({","userId":"582e63d27c56960011aff09e","created":1685965053,"updated":1685965053},{"id":"647dc8fcaff09e00005432a2","text":"      url: process.env.QDRANT_ENDPOINT,","userId":"582e63d27c56960011aff09e","created":1685965053,"updated":1685965053},{"id":"647dc8fcaff09e00005432a3","text":"      apiKey: process.env.QDRANT_API_KEY,","userId":"582e63d27c56960011aff09e","created":1685965053,"updated":1685965053},{"id":"647dc8fcaff09e00005432a4","text":"    });","userId":"582e63d27c56960011aff09e","created":1685965053,"updated":1685965053},{"id":"647dc8fcaff09e00005432a5","text":"  ","userId":"582e63d27c56960011aff09e","created":1685965053,"updated":1685965053},{"id":"647dc8fcaff09e00005432a6","text":"    const grdantResult = await client.search(COLLECTION_NAME, {","userId":"582e63d27c56960011aff09e","created":1685965053,"updated":1685965053},{"id":"647dc8fcaff09e00005432a7","text":"      vector: openAIEmbedding,","userId":"582e63d27c56960011aff09e","created":1685965053,"updated":1685965053},{"id":"647dc8fcaff09e00005432a8","text":"      limit: 3,","userId":"582e63d27c56960011aff09e","created":1685965053,"updated":1685965053},{"id":"647dc8fcaff09e00005432a9","text":"    });","userId":"582e63d27c56960011aff09e","created":1685965053,"updated":1685965053},{"id":"647dc8fcaff09e00005432aa","text":"  ","userId":"582e63d27c56960011aff09e","created":1685965053,"updated":1685965053},{"id":"647dc8fcaff09e00005432ab","text":"    res.status(200).json(grdantResult);","userId":"582e63d27c56960011aff09e","created":1685965053,"updated":1685965053},{"id":"647dc8fcaff09e00005432ac","text":"  };","userId":"582e63d27c56960011aff09e","created":1685965053,"updated":1685965053},{"id":"647dc8fcaff09e00005432ad","text":"  export default handle;","userId":"582e63d27c56960011aff09e","created":1685965053,"updated":1685965053},{"id":"647dc8fcaff09e00005432ae","text":"\tOK","userId":"582e63d27c56960011aff09e","created":1685965053,"updated":1685965056},{"id":"647dc900aff09e00005432af","text":"","userId":"582e63d27c56960011aff09e","created":1685965057,"updated":1685965057},{"id":"647dc903aff09e00005432b0","text":"フォームから検索文字列を取る","userId":"582e63d27c56960011aff09e","created":1685965060,"updated":1685965901},{"id":"647dcc4eaff09e0000054ad0","text":"　code::","userId":"582e63d27c56960011aff09e","created":1685965903,"updated":1685965930},{"id":"647dcc6aaff09e00005432bd","text":"　\tError: Event handlers cannot be passed to Client Component props.","userId":"582e63d27c56960011aff09e","created":1685965930,"updated":1685965930},{"id":"647dcc66aff09e00005432ba","text":"   <button id=\"search\" onClick={function} children=...>","userId":"582e63d27c56960011aff09e","created":1685965927,"updated":1685965927},{"id":"647dcc66aff09e00005432bb","text":"                               ^^^^^^^^^^","userId":"582e63d27c56960011aff09e","created":1685965927,"updated":1685965927},{"id":"647dcc66aff09e00005432bc","text":" \tIf you need interactivity, consider converting part of this to a Client Component.","userId":"582e63d27c56960011aff09e","created":1685965927,"updated":1685965933},{"id":"647dcc6eaff09e00005432be","text":"","userId":"582e63d27c56960011aff09e","created":1685965935,"updated":1685965935},{"id":"647db828aff09e0000054acd","text":"レスポンスを整形する","userId":"582e63d27c56960011aff09e","created":1685960745,"updated":1685960760},{"id":"647db838aff09e0000054ace","text":"　ScrapboxのタイトルからURLを作る","userId":"582e63d27c56960011aff09e","created":1685960760,"updated":1685962111},{"id":"647dbd7faff09e0000054acf","text":"　[https://gyazo.com/27e93ce643025450fc3930f36cbffb46]","userId":"582e63d27c56960011aff09e","created":1685962111,"updated":1685966699},{"id":"647dcf6aaff09e00005432bf","text":"　見た目はさておき、検索はできた","userId":"582e63d27c56960011aff09e","created":1685966699,"updated":1685966771},{"id":"647dcfb3aff09e0000054ad1","text":"　　タイトルをクリックするとScrapboxの該当ページにジャンプする","userId":"582e63d27c56960011aff09e","created":1685966771,"updated":1685966801},{"id":"647dcfd8aff09e0000054ad2","text":"　　TailwindCSSが初めてなので見た目をどうするかわからない","userId":"582e63d27c56960011aff09e","created":1685966808,"updated":1685966829},{"id":"647dcfedaff09e0000054ad3","text":"　　　ChatGPTに聞こうw","userId":"582e63d27c56960011aff09e","created":1685966829,"updated":1685966836},{"id":"647dd1bfaff09e00005432c3","text":"　　Make the result looks better.って言ったらいい感じにしてくれたw","userId":"582e63d27c56960011aff09e","created":1685967296,"updated":1685967308},{"id":"647dadadaff09e0000543253","text":"\t\t\t[https://gyazo.com/91e36c13c5d7e4a50e292b8fea06ab4e]","userId":"582e63d27c56960011aff09e","created":1685958061,"updated":1685967309},{"id":"647dd1b4aff09e00005432c1","text":"\t\t全体的に直させた","userId":"582e63d27c56960011aff09e","created":1685967284,"updated":1685967601},{"id":"647dd2f0aff09e00005432c4","text":"\t\t\t[https://gyazo.com/05926e6fbdd4634d05ea0e3e899b86d7]","userId":"582e63d27c56960011aff09e","created":1685967601,"updated":1685967603},{"id":"647dd2f3aff09e00005432c5","text":"　　　こだわりがないウェブアプリの外見デザインに関してはChatGPTで十分だな…","userId":"582e63d27c56960011aff09e","created":1685967603,"updated":1685968096},{"id":"647dd144aff09e00005432c0","text":"","userId":"582e63d27c56960011aff09e","created":1685967173,"updated":1685967173},{"id":"647dcc38aff09e00005432b2","text":"次回のためのメモ","userId":"582e63d27c56960011aff09e","created":1685965880,"updated":1685966856},{"id":"647dcc39aff09e00005432b4","text":" ページタイトル画像","userId":"582e63d27c56960011aff09e","created":1685965882,"updated":1685965882},{"id":"647dcc39aff09e00005432b5","text":"  `/api/pages/:projectName/:pageTitle/icon`","userId":"582e63d27c56960011aff09e","created":1685965882,"updated":1685965882},{"id":"647dcc39aff09e00005432b6","text":"","userId":"582e63d27c56960011aff09e","created":1685965882,"updated":1685965925},{"id":"647dcc39aff09e00005432b3","text":"　管理者用の画面","userId":"582e63d27c56960011aff09e","created":1685965881,"updated":1685968119},{"id":"647dd4f7aff09e0000054ad5","text":"　　検索クエリは保管して管理者が見れるようにする","userId":"582e63d27c56960011aff09e","created":1685968119,"updated":1685968133},{"id":"647dd504aff09e0000054ad6","text":"　　　そういう旨の説明が書いてあるページを作る","userId":"582e63d27c56960011aff09e","created":1685968133,"updated":1686014297},{"id":"647e8959aff09e00008ea9c0","text":"　　　検索した時点で結果をFirebaseに入れてパーマリンクを出すか","userId":"582e63d27c56960011aff09e","created":1686014298,"updated":1686014327},{"id":"647dd59baff09e0000054ad9","text":"　　公開する","userId":"582e63d27c56960011aff09e","created":1685968284,"updated":1685968286},{"id":"647dd59faff09e0000054ada","text":"　　　自分でスマホから使ってみたりする","userId":"582e63d27c56960011aff09e","created":1685968287,"updated":1685968299},{"id":"647ddfd6aff09e0000054adb","text":"　　　スマホから見たら背景が黒くなかった","userId":"582e63d27c56960011aff09e","created":1685970904,"updated":1685970924},{"id":"647ddfdfaff09e0000054adc","text":"　　　検索したときに、検索中なのかエラーで死んだのかわからない ✅fixed","userId":"582e63d27c56960011aff09e","created":1685970911,"updated":1686015257},{"id":"647df0a0aff09e0000ec428c","text":"　　　スマホでエラーになる件 ✅fixed","userId":"582e63d27c56960011aff09e","created":1685975201,"updated":1686015252},{"id":"647df0a7aff09e0000ec428d","text":"　　　　環境変数の設定し忘れ！","userId":"582e63d27c56960011aff09e","created":1685975207,"updated":1685975216},{"id":"647df0b0aff09e0000ec428e","text":"　　　　.env.localはデプロイ先の環境変数に入らない(そもそも.gitignoreしててリポジトリに入ってない！)","userId":"582e63d27c56960011aff09e","created":1685975216,"updated":1685975251},{"id":"647dd525aff09e0000054ad7","text":"　　[URL Fragment Text Directives]をつける","userId":"582e63d27c56960011aff09e","created":1685968165,"updated":1685972619},{"id":"647de684aff09e0000054add","text":"　　　これ厄介だな","userId":"582e63d27c56960011aff09e","created":1685972616,"updated":1685972624},{"id":"647de694aff09e0000054ade","text":"　　　　例えばScrapbox記法が混じってるとブラウザのテキストには記法がないからヒットしない","userId":"582e63d27c56960011aff09e","created":1685972629,"updated":1685972659},{"id":"647de6b8aff09e0000054adf","text":"　　　　真面目にやるならプレーンテキストにする必要がある","userId":"582e63d27c56960011aff09e","created":1685972664,"updated":1685972683},{"id":"647dd554aff09e0000054ad8","text":"","userId":"582e63d27c56960011aff09e","created":1685968212,"updated":1685968301},{"id":"647dd4f1aff09e0000054ad4","text":"[GPT https://chat.openai.com/share/a0afa341-a147-4c0f-a164-9587eb4fc815]","userId":"582e63d27c56960011aff09e","created":1685968113,"updated":1686015231},{"id":"647e8cf9aff09e00008175a9","text":"next: [pVectorSearch2023-06-06]","userId":"582e63d27c56960011aff09e","created":1686015226,"updated":1686036797},{"id":"647ee140aff09e00002573f3","text":"","userId":"582e63d27c56960011aff09e","created":1686036800,"updated":1686036800},{"id":"647ee140aff09e00002573f4","text":"[ベクトル検索で関連ページ]","userId":"582e63d27c56960011aff09e","created":1686036801,"updated":1686036839}],"links":["pVectorSearch2023-06-02","pVectorSearch","URL Fragment Text Directives","pVectorSearch2023-06-06","ベクトル検索で関連ページ"],"projectLinks":[],"icons":[],"files":[],"infoboxDefinition":[],"infoboxResult":[],"infoboxDisableLinks":[],"relatedPages":{"links1hop":[{"id":"644d2bab7c6482001b503017","title":"pVectorSearch","titleLc":"pvectorsearch","image":null,"descriptions":["このScrapboxを中心とする[ベクトル検索]に関するプロジェクト","[西尾のベクトル検索]","[pVectorSearch2023-04-29~05-31]","[pVectorSearch2023-06-02]","[pVectorSearch2023-06-05]"],"linksLc":["ベクトル検索","西尾のベクトル検索","pvectorsearch2023-04-29~05-31","pvectorsearch2023-06-02","pvectorsearch2023-06-05","pvectorsearch2023-06-06","pvectorsearch2023-06-07","pvectorsearch2023-06-13","日記2023-06-15","pvectorsearch2023-06-20","pvecsearch","pvecsearch2024-03-22振り返り","2024-09-17ベクトル検索止まってる✅","2024-09ベクトル検索の改善"],"linked":11,"pageRank":25.2,"created":1682779053,"updated":1727102914,"accessed":1783093612,"charsCount":396},{"id":"66f17f3edf7848001df1a267","title":"pVectorSearch2023-06-20","titleLc":"pvectorsearch2023-06-20","image":"https://gyazo.com/6e99c7cd8a3697961f317e54a3ffb928/raw","descriptions":["from [pVectorSearch]","pVectorSearch2023-06-20","新機能案","GETでURLフラグメントにScrapboxのページ名を渡す","Scrapbox側は新しいタブで開くUserScriptを作る"],"linksLc":["pvectorsearch","pvectorsearch2023-06-05","git_lfs"],"linked":1,"pageRank":4,"infoboxDisableLinks":[],"created":1727102782,"updated":1727102783,"accessed":1783592145,"charsCount":1803},{"id":"65fd2a6c333fac002598e501","title":"pVecSearch2024-03-22振り返り","titleLc":"pvecsearch2024-03-22振り返り","image":null,"descriptions":["[/plurality-japanese/ベクトル検索の改善]","[claude.icon]pVectorSearchプロジェクトのまとめを作成しました。","[pVectorSearch]","このScrapboxを中心とする[ベクトル検索]に関するプロジェクト","[西尾のベクトル検索]の開発や実験、考察が含まれる"],"linksLc":["pvectorsearch","ベクトル検索","西尾のベクトル検索","pvectorsearch2023-04-29~05-31","pvectorsearch2023-06-02","pvectorsearch2023-06-05","qdrant","scrapbox_chatgpt_connector","埋め込みapi呼び出しの並列化","pvectorsearch2023-06-06","pvectorsearch2023-06-07","pvectorsearch2023-06-13","日記2023-06-15","非公開資料をベクトル検索対象にする","蔵書横断ベクトル検索","democratic_inputs_to_ai","omni","the_plurality_book","pvectorsearch2024-04-02","熟議","前提知識の共有"],"linked":4,"pageRank":14.6,"infoboxDisableLinks":[],"created":1711090287,"updated":1712064117,"accessed":1782697952,"charsCount":2759},{"id":"61dec09468c4bf00204686e4","title":"NextJS","titleLc":"nextjs","image":null,"descriptions":["https://nextjs.org/","see recent usecase [pVectorSearch2023-06-05]","[React]","[Vercel]"],"linksLc":["pvectorsearch2023-06-05","react","vercel"],"linked":2,"pageRank":5.4,"created":1641988246,"updated":1688394722,"accessed":1782301314,"charsCount":84},{"id":"647958b5cc1499001bdbea01","title":"pVectorSearch2023-06-02","titleLc":"pvectorsearch2023-06-02","image":"https://gyazo.com/4178a1bc88bc340262ee1dfd244c4b17/raw","descriptions":["[pVectorSearch]","2023-06-01","ローカルにDockerで建てた[qdrant]に色々入れて試した","2023-06-02","[Scrapbox ChatGPT Connector]では、まずはクリーニングしたテキストから埋め込みベクトルへのマッピングを使った(1)"],"linksLc":["pvectorsearch","qdrant","scrapbox_chatgpt_connector","embedding_api","埋め込みapi呼び出しの並列化","url_fragment_text_directives"],"linked":5,"pageRank":11.8,"created":1685674176,"updated":1686107755,"accessed":1783847952,"charsCount":3266},{"id":"647ec141c13759001c5ad98a","title":"pVectorSearch2023-06-06","titleLc":"pvectorsearch2023-06-06","image":"https://gyazo.com/82af3a39197d8eb14dd5749d40371f6f/raw","descriptions":["prev [pVectorSearch2023-06-05]","Firebaseに検索結果を保存し、それをシェアするためのパーマリンクを作る","`$ npm install firebase`","[https://gyazo.com/82af3a39197d8eb14dd5749d40371f6f]","ほー、新しい書き方が生まれてる"],"linksLc":["pvectorsearch2023-06-05","西尾のベクトル検索","url_fragment_text_directives","pvectorsearch2023-06-07"],"linked":4,"pageRank":8.6,"created":1686028611,"updated":1686104947,"accessed":1783845302,"charsCount":1744},{"id":"647a272d237a4f001ce9bca7","title":"URL Fragment Text Directives","titleLc":"url_fragment_text_directives","image":null,"descriptions":["`#:~:text=Text`のこと","[https://wicg.github.io/scroll-to-text-fragment/ URL Fragment Text Directives]"],"linksLc":[],"linked":3,"pageRank":3.2,"created":1685727027,"updated":1686040028,"accessed":1782539025,"charsCount":124},{"id":"647ee1673c1cc5001b394642","title":"ベクトル検索で関連ページ","titleLc":"ベクトル検索で関連ページ","image":null,"descriptions":["from [pVectorSearch2023-06-05]","[ベクトル検索]で[関連ページ]","技術的にはScrapboxのURLを投げたらコンテンツを取得して埋め込んで検索結果を返すことはできる","つまりベクトル検索で関連ページを出すわけだ","どういうUIが良いかは微妙"],"linksLc":["pvectorsearch2023-06-05","ベクトル検索","関連ページ"],"linked":1,"pageRank":4.2,"created":1686036840,"updated":1686037482,"accessed":1783898582,"charsCount":247}],"links2hop":[{"id":"66dd0a3fb69e8e001cf48f02","title":"2024-09-08外部脳GitHub作業","titleLc":"2024-09-08外部脳github作業","image":"https://gyazo.com/021a459efdd87f7d62cca42243fdfe81/raw","descriptions":["2024-09-08","リポジトリは作った https://github.com/nishio/nishio-hirokazu-external-brain","次に何をするべきか考える","あと3分で会議なので考えるだけ","翻訳システムでJSONのExportなどは自動化されている"],"linksLc":["etude-github-actions","pvectorsearch"],"linked":8,"pageRank":10.8,"infoboxDisableLinks":[],"created":1725762113,"updated":1744384066,"accessed":1783830329,"charsCount":1693},{"id":"66c589e92df08a001d4250d9","title":"2024-09ベクトル検索の改善","titleLc":"2024-09ベクトル検索の改善","image":"https://gyazo.com/147cfea34aa4fde52f327bccc8fa5dab/raw","descriptions":["2024-09-23","kennさんの投稿を参考にして更新する",">[kenn https://x.com/kenn/status/1826112390754349165] 大掃除ついでに、ベクター検索DB  @qdrant_engineの保存方法も大幅に見直し。ディスク使用量もメモリ使用量も1/10になった！",">[kenn https://x.com/kenn/status/1826112393455480944] まず、ada-002を卒業して[3-large]に移行。",">"],"linksLc":["3-large","マトリョーシカ表現学習","matryoshka_representation_learning","さまざまな抽象度で問いを抽出","pvectorsearch"],"linked":2,"pageRank":7.6,"infoboxDisableLinks":[],"created":1724221931,"updated":1727103307,"accessed":1783257964,"charsCount":2307},{"id":"64b582cfc90b6b001b31f7ff","title":"pOmoikane","titleLc":"pomoikane","image":null,"descriptions":["[pFeedback]","[pVectorSearch]","[pKomorebiKagami]","old title: pX","[/omoikane]"],"linksLc":["pfeedback","pvectorsearch","pkomorebikagami"],"linked":11,"pageRank":14.2,"created":1689617105,"updated":1716757567,"accessed":1783779889,"charsCount":94},{"id":"657e92e041335d00244820d0","title":"pVecSearch","titleLc":"pvecsearch","image":null,"descriptions":["[pVectorSearch]が正しい","[西尾のベクトル検索]","1ページ1回でいい気がする","もっと細かいチャンクわけと比較したい"],"linksLc":["pvectorsearch","西尾のベクトル検索"],"linked":1,"pageRank":3.2,"created":1702793954,"updated":1711276388,"accessed":1783258149,"charsCount":73},{"id":"651f985bb9bb900040ed15db","title":"ベクトル検索は切り出しの機会になる","titleLc":"ベクトル検索は切り出しの機会になる","image":null,"descriptions":["[切り出し]","[切り分けられていない連なりの一部にヒットすることで切り出しの機会になる]","__BELOW_IS_AI_GENERATED__","[*** ベクトル検索は切り出しの機会になる] 2023-10-06 14:15 [omni.icon]","[** note]"],"linksLc":["切り出し","切り分けられていない連なりの一部にヒットすることで切り出しの機会になる","盲点カード","pvectorsearch","pvectorsearch2023-04-29~05-31","横断ベクトル検索実験メモ2023-09-20","西尾のベクトル検索","next勉強会","ベクトル検索が有用だった事例"],"linked":4,"pageRank":13,"created":1696569435,"updated":1697191381,"accessed":1783461238,"charsCount":6179},{"id":"648c91dfab942e001bf7ffea","title":"pContinuousTranslation","titleLc":"pcontinuoustranslation","image":null,"descriptions":["[継続的翻訳]プロジェクトに関する個人的メモのハブページです #pProjectIndex","[Scrapbox自動翻訳]","2023-06-17","DeepLをやめてGPT3.5にする(決定)","それを[pVectorSearch]に入れる"],"linksLc":["継続的翻訳","pprojectindex","scrapbox自動翻訳","pvectorsearch","pscrapboxautotrans","pcontinuoustranslation2023-04-27","pcontinuoustranslation2023-05-06","pcontinuoustranslation2023-06-01"],"linked":5,"pageRank":14.8,"created":1686933987,"updated":1689948528,"accessed":1781933185,"charsCount":313},{"id":"648b45fa39fe37001c774793","title":"pVectorSearch2023-04-29~05-31","titleLc":"pvectorsearch2023-04-29~05-31","image":null,"descriptions":["from [pVectorSearch]","pVectorSearch2023-04-29~05-31","2023-04-29","このScrapboxの[ベクトル検索]に関する考察","人間がやるためのUIを使ってもあんまり面白くない"],"linksLc":["pvectorsearch","ベクトル検索","盲点カード","画像と文章のペアに価値がある","自分のscrapboxをベクトル検索して2hopリンクをたどる","質問を収集して改善する","個人の知識ネットワークの相互作用","他人のscrapboxもベクトル検索したい","社会的トリガー","みずからの目で見なければならない"],"linked":4,"pageRank":14,"created":1686849019,"updated":1686849023,"accessed":1783552445,"charsCount":1103},{"id":"647feb75b50712001c8890a7","title":"pVectorSearch2023-06-07","titleLc":"pvectorsearch2023-06-07","image":"https://gyazo.com/e23a56be5c403dfdf5d2452e0ec051bf/raw","descriptions":["prev [pVectorSearch2023-06-06]",">ネクストアクションはエクスポートを介さずに公開プロジェクトのデータを吸い取ってインデックスにすること","[/halsk] 1281 pages","[/yuiseki] 2679 pages","[/tkgshn] 5648 pages"],"linksLc":["pvectorsearch2023-06-06","pvectorsearch2023-06-02","埋め込みapi呼び出しの並列化","協働","合意形成"],"linked":4,"pageRank":9.6,"created":1686104980,"updated":1686740293,"accessed":1782363947,"charsCount":3038},{"id":"647c7e71d42995001bac1973","title":"週記2023-06-04~2023-06-11","titleLc":"週記2023-06-04~2023-06-11","image":null,"descriptions":["prev [週記2023-05-28~06-04]","先週何をやった？","このScrapboxのベクトル検索のサービス提供に向けて[qdrant]をいじる","[pVectorSearch2023-06-02]","週末の[Social Hack Day #50]のまとめ"],"linksLc":["週記2023-05-28~06-04","qdrant","pvectorsearch2023-06-02","social_hack_day_#50","scrapboxとnotionの共同編集の比較","参加証明nft発行体験記","参加証明nft取得体験記","code_for_japan","democratic_inputs_to_ai","aiアシスタントのパーソナライゼーションはどこまでやるべきか？","polisのdbからデータをエクスポート"],"linked":1,"pageRank":11.6,"created":1685880434,"updated":1686461252,"accessed":1783430078,"charsCount":333}],"fatHeadwordsLc":[],"hiddenHeadwordsLc":[],"projectLinks1hop":[],"hasBackLinksOrIcons":true,"search":"","charsCount":{"links1hop":10423,"links2hop":15133},"searchBackend":"elasticsearch"}}