jeongsk commited on
Commit
26dc1ed
·
1 Parent(s): bb62547

feat: Split text into semantic chunks and save as parquet file

Browse files
dale_retriver_agent.ipynb CHANGED
@@ -2,30 +2,33 @@
2
  "cells": [
3
  {
4
  "cell_type": "code",
5
- "execution_count": 5,
6
  "metadata": {},
7
  "outputs": [],
8
  "source": [
9
- "from langchain.embeddings.cache import CacheBackedEmbeddings\n",
10
- "from langchain.storage import LocalFileStore\n",
11
- "from langchain_community.embeddings import HuggingFaceBgeEmbeddings\n",
12
- "\n",
13
- "underlying_embedder = HuggingFaceBgeEmbeddings(\n",
14
- " model_name=\"BAAI/bge-m3\",\n",
15
- ")\n",
16
- "\n",
17
- "store = LocalFileStore(\"./.cache/embeddings\")\n",
18
- "\n",
19
- "embedder = CacheBackedEmbeddings.from_bytes_store(\n",
20
- " underlying_embedder, store, namespace=underlying_embedder.model_name\n",
21
- ")"
22
  ]
23
  },
24
  {
25
  "cell_type": "code",
26
- "execution_count": 26,
27
  "metadata": {},
28
- "outputs": [],
 
 
 
 
 
 
 
 
 
 
 
29
  "source": [
30
  "from langchain_text_splitters import RecursiveCharacterTextSplitter, Language\n",
31
  "\n",
@@ -35,36 +38,83 @@
35
  " ),\n",
36
  " chunk_size=4096,\n",
37
  " keep_separator=True,\n",
38
- ")"
 
 
 
39
  ]
40
  },
41
  {
42
  "cell_type": "code",
43
- "execution_count": 28,
44
  "metadata": {},
45
  "outputs": [
46
  {
47
  "data": {
48
  "text/plain": [
49
- "139"
50
  ]
51
  },
52
- "execution_count": 28,
53
  "metadata": {},
54
  "output_type": "execute_result"
55
  }
56
  ],
57
  "source": [
58
- "text = \"\"\n",
59
- "with open(\n",
60
- " \"./raw_data/dale_carnegie/how_to_win_friends_and_influence_people.txt\", \"r\"\n",
61
- ") as f:\n",
62
- " text = f.read()\n",
 
 
 
 
63
  "\n",
 
 
 
 
 
64
  "splitted_text = text_splitter.split_text(text)\n",
65
  "len(splitted_text)"
66
  ]
67
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
  {
69
  "cell_type": "code",
70
  "execution_count": 29,
 
2
  "cells": [
3
  {
4
  "cell_type": "code",
5
+ "execution_count": 3,
6
  "metadata": {},
7
  "outputs": [],
8
  "source": [
9
+ "text = \"\"\n",
10
+ "with open(\n",
11
+ " \"./raw_data/dale_carnegie/how_to_win_friends_and_influence_people.txt\", \"r\"\n",
12
+ ") as f:\n",
13
+ " text = f.read()"
 
 
 
 
 
 
 
 
14
  ]
15
  },
16
  {
17
  "cell_type": "code",
18
+ "execution_count": 4,
19
  "metadata": {},
20
+ "outputs": [
21
+ {
22
+ "data": {
23
+ "text/plain": [
24
+ "139"
25
+ ]
26
+ },
27
+ "execution_count": 4,
28
+ "metadata": {},
29
+ "output_type": "execute_result"
30
+ }
31
+ ],
32
  "source": [
33
  "from langchain_text_splitters import RecursiveCharacterTextSplitter, Language\n",
34
  "\n",
 
38
  " ),\n",
39
  " chunk_size=4096,\n",
40
  " keep_separator=True,\n",
41
+ ")\n",
42
+ "\n",
43
+ "splitted_text = text_splitter.split_text(text)\n",
44
+ "len(splitted_text)"
45
  ]
46
  },
47
  {
48
  "cell_type": "code",
49
+ "execution_count": 10,
50
  "metadata": {},
51
  "outputs": [
52
  {
53
  "data": {
54
  "text/plain": [
55
+ "207"
56
  ]
57
  },
58
+ "execution_count": 10,
59
  "metadata": {},
60
  "output_type": "execute_result"
61
  }
62
  ],
63
  "source": [
64
+ "# Semantic Splitting\n",
65
+ "from langchain.storage import LocalFileStore\n",
66
+ "from langchain.embeddings.cache import CacheBackedEmbeddings\n",
67
+ "from langchain_experimental.text_splitter import SemanticChunker\n",
68
+ "from langchain_openai.embeddings import OpenAIEmbeddings\n",
69
+ "\n",
70
+ "underlying_embedder = OpenAIEmbeddings(model=\"text-embedding-3-small\")\n",
71
+ "\n",
72
+ "store = LocalFileStore(\"./.cache/embeddings\")\n",
73
  "\n",
74
+ "embedder = CacheBackedEmbeddings.from_bytes_store(\n",
75
+ " underlying_embedder, store, namespace=underlying_embedder.model\n",
76
+ ")\n",
77
+ "\n",
78
+ "text_splitter = SemanticChunker(embedder)\n",
79
  "splitted_text = text_splitter.split_text(text)\n",
80
  "len(splitted_text)"
81
  ]
82
  },
83
+ {
84
+ "cell_type": "code",
85
+ "execution_count": 13,
86
+ "metadata": {},
87
+ "outputs": [],
88
+ "source": [
89
+ "import pandas as pd\n",
90
+ "\n",
91
+ "df = pd.DataFrame(splitted_text, columns=[\"text\"])\n",
92
+ "df.to_parquet(\n",
93
+ " \"./raw_data/dale_carnegie/how_to_win_friends_and_influence_people.parquet\"\n",
94
+ ")"
95
+ ]
96
+ },
97
+ {
98
+ "cell_type": "code",
99
+ "execution_count": 5,
100
+ "metadata": {},
101
+ "outputs": [],
102
+ "source": [
103
+ "from langchain.storage import LocalFileStore\n",
104
+ "from langchain.embeddings.cache import CacheBackedEmbeddings\n",
105
+ "from langchain_community.embeddings import HuggingFaceBgeEmbeddings\n",
106
+ "\n",
107
+ "underlying_embedder = HuggingFaceBgeEmbeddings(\n",
108
+ " model_name=\"BAAI/bge-m3\",\n",
109
+ ")\n",
110
+ "\n",
111
+ "store = LocalFileStore(\"./.cache/embeddings\")\n",
112
+ "\n",
113
+ "embedder = CacheBackedEmbeddings.from_bytes_store(\n",
114
+ " underlying_embedder, store, namespace=underlying_embedder.model_name\n",
115
+ ")"
116
+ ]
117
+ },
118
  {
119
  "cell_type": "code",
120
  "execution_count": 29,
raw_data/dale_carnegie/how_to_win_friends_and_influence_people.parquet ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:75b5718819389b15bf54e5edb329f888cf0b9f2dd69e418b29e7eedee8747c74
3
+ size 259681