Rockset
Rockset(已被 OpenAI 收购)是一个在云端运行的实时分析 SQL 数据库。Rockset 以 SQL 函数的形式提供向量搜索功能,以支持依赖文本相似性的 AI 应用。
¥Rockset (acquired by OpenAI) is a real-time analyitics SQL database that runs in the cloud. Rockset provides vector search capabilities, in the form of SQL functions, to support AI applications that rely on text similarity.
设置
¥Setup
安装 rockset 客户端。
¥Install the rockset client.
yarn add @rockset/client
用法
¥Usage
tip
- npm
- Yarn
- pnpm
npm install @langchain/openai @langchain/core @langchain/community
yarn add @langchain/openai @langchain/core @langchain/community
pnpm add @langchain/openai @langchain/core @langchain/community
下面是如何使用 OpenAI 和 Rockset 回答有关文本文件的问题的示例:
¥Below is an example showcasing how to use OpenAI and Rockset to answer questions about a text file:
import * as rockset from "@rockset/client";
import { ChatOpenAI, OpenAIEmbeddings } from "@langchain/openai";
import { RocksetStore } from "@langchain/community/vectorstores/rockset";
import { RecursiveCharacterTextSplitter } from "@langchain/textsplitters";
import { readFileSync } from "fs";
import { ChatPromptTemplate } from "@langchain/core/prompts";
import { createStuffDocumentsChain } from "langchain/chains/combine_documents";
import { createRetrievalChain } from "langchain/chains/retrieval";
const store = await RocksetStore.withNewCollection(new OpenAIEmbeddings(), {
client: rockset.default.default(
process.env.ROCKSET_API_KEY ?? "",
`https://api.${process.env.ROCKSET_API_REGION ?? "usw2a1"}.rockset.com`
),
collectionName: "langchain_demo",
});
const model = new ChatOpenAI({ model: "gpt-3.5-turbo-1106" });
const questionAnsweringPrompt = ChatPromptTemplate.fromMessages([
[
"system",
"Answer the user's questions based on the below context:\n\n{context}",
],
["human", "{input}"],
]);
const combineDocsChain = await createStuffDocumentsChain({
llm: model,
prompt: questionAnsweringPrompt,
});
const chain = await createRetrievalChain({
retriever: store.asRetriever(),
combineDocsChain,
});
const text = readFileSync("state_of_the_union.txt", "utf8");
const docs = await new RecursiveCharacterTextSplitter().createDocuments([text]);
await store.addDocuments(docs);
const response = await chain.invoke({
input: "When was America founded?",
});
console.log(response.answer);
await store.destroy();
API Reference:
- ChatOpenAI from
@langchain/openai
- OpenAIEmbeddings from
@langchain/openai
- RocksetStore from
@langchain/community/vectorstores/rockset
- RecursiveCharacterTextSplitter from
@langchain/textsplitters
- ChatPromptTemplate from
@langchain/core/prompts
- createStuffDocumentsChain from
langchain/chains/combine_documents
- createRetrievalChain from
langchain/chains/retrieval
相关
¥Related
向量存储 概念指南
¥Vector store conceptual guide
向量存储 操作指南
¥Vector store how-to guides