RecursiveCharacterTextSplitterが改行分割できない?
VectorStoreとしてfaissを利用して、FAQ検索を作成しています。
文章ファイルを読み込んで、利用しています。
ただ、PythonではなくNodejsを使用しています。
普段がNodejsを利用しているってのもありますけど、どこもかしこもPythonなのが面白くなく、なんとかNodejsをって思ってやりましました。
まぁ、PythonでWebAPIにしようとしてFastAPIを使ったんですが、どうも気に入らなかったってのあります(^^;
サンプルではどうなっているか?
LangChainのサイトのFaissのところを参考にしました。
// Create docs with a loader
const loader = new TextLoader("src/document_loaders/example_data/example.txt");
const docs = await loader.load();
// Load the docs into the vector store
const vectorStore = await FaissStore.fromDocuments(
docs,
new OpenAIEmbeddings()
);
// Search for the most similar document
const resultOne = await vectorStore.similaritySearch("hello world", 1);
console.log(resultOne);
このまま実行してみたんですが、読み込んだファイルが、テキスト分割もされずヌルって出力されます。どっかでchunkとかされてるんかと思ってたんですが、それっぽいパラメータを設定するところも無し。。
どうやるんだろ。。
それでどうした!
普通にファイルを読み込んで、RecursiveCharacterTextSplitterをつかって分割するようにしました。
const textSplitter = new RecursiveCharacterTextSplitter({
separators : [ '\n', '\n\n', '\r\n', '*' ],
chunkSize : 50,
chunkOverlap : 1
});
const docs = await textSplitter.createDocuments([ documents ]);
ところが、改行がうまく分割されないんですよね。
全然ってわけでなく、分割できないところがあるって表現が正しいです。
Document {
pageContent: '2. 労働時間外の勤務には、法定の時間外手当を支給する。\n\n**第4条 休暇**',
metadata: { loc: [Object] }
},
こんな感じです。
この辺、みなさんどうされてるんでしょうか。。
あとがき
今回はとりあえずこのまま利用しますが、突っ込んで調べる必要ありって感じです。