見出し画像

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] }
  },

こんな感じです。
この辺、みなさんどうされてるんでしょうか。。

あとがき

今回はとりあえずこのまま利用しますが、突っ込んで調べる必要ありって感じです。

この記事が気に入ったらサポートをしてみませんか?