<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Cookbooks on Lucille</title><link>https://kmwtechnology.github.io/lucille/docs-pre-release/ingest-design/cookbooks/</link><description>Recent content in Cookbooks on Lucille</description><generator>Hugo</generator><language>en</language><lastBuildDate>Tue, 10 Mar 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://kmwtechnology.github.io/lucille/docs-pre-release/ingest-design/cookbooks/index.xml" rel="self" type="application/rss+xml"/><item><title>File Ingestion Cookbook</title><link>https://kmwtechnology.github.io/lucille/docs-pre-release/ingest-design/cookbooks/file_ingest_cookbook/</link><pubDate>Mon, 09 Jun 2025 00:00:00 +0000</pubDate><guid>https://kmwtechnology.github.io/lucille/docs-pre-release/ingest-design/cookbooks/file_ingest_cookbook/</guid><description>&lt;p&gt;This cookbook covers common file ingestion patterns using Lucille&amp;rsquo;s &lt;code&gt;FileConnector&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="recipe-1-ingest-csv-files-from-local-filesystem"&gt;Recipe 1: Ingest CSV Files from Local Filesystem&lt;/h2&gt;
&lt;p&gt;Read all &lt;code&gt;.csv&lt;/code&gt; files in a directory and index each row as a document into OpenSearch.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-hocon" data-lang="hocon"&gt;connectors: [
 {
 name: &amp;#34;csv-connector&amp;#34;
 class: &amp;#34;com.kmwllc.lucille.connector.FileConnector&amp;#34;
 pipeline: &amp;#34;csv-pipeline&amp;#34;
 paths: [&amp;#34;/data/csvfiles&amp;#34;]

 fileHandlers: {
 csv {
 filenameField: &amp;#34;source_file&amp;#34;
 docIdPrefix: &amp;#34;row-&amp;#34;
 }
 }

 filterOptions: {
 includes: [&amp;#34;.*\\.csv$&amp;#34;]
 }
 }
]

pipelines: [
 {
 name: &amp;#34;csv-pipeline&amp;#34;
 stages: [
 {
 class: &amp;#34;com.kmwllc.lucille.stage.TrimWhitespace&amp;#34;
 fields: [&amp;#34;title&amp;#34;, &amp;#34;description&amp;#34;]
 }
 ]
 }
]

indexer { type: &amp;#34;opensearch&amp;#34; }

opensearch {
 url: &amp;#34;https://localhost:9200&amp;#34;
 index: &amp;#34;my-docs&amp;#34;
 acceptInvalidCert: true
}
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="recipe-2-ingest-json-files"&gt;Recipe 2: Ingest JSON Files&lt;/h2&gt;
&lt;p&gt;Read &lt;code&gt;.json&lt;/code&gt; or &lt;code&gt;.jsonl&lt;/code&gt; files. Each top-level JSON object (or each line in a &lt;code&gt;.jsonl&lt;/code&gt; file) becomes a Document.&lt;/p&gt;</description></item><item><title>Vector Search Cookbook</title><link>https://kmwtechnology.github.io/lucille/docs-pre-release/ingest-design/cookbooks/vector_search_cookbook/</link><pubDate>Mon, 09 Jun 2025 00:00:00 +0000</pubDate><guid>https://kmwtechnology.github.io/lucille/docs-pre-release/ingest-design/cookbooks/vector_search_cookbook/</guid><description>&lt;p&gt;This cookbook shows how to build end-to-end vector search pipelines with Lucille.&lt;/p&gt;
&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;A typical vector search pipeline:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Read&lt;/strong&gt; source documents (files, database, RSS, etc.)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Extract text&lt;/strong&gt; from each document if needed (Tika for PDF/Office files)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chunk&lt;/strong&gt; long text into smaller pieces suitable for embedding&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Embed&lt;/strong&gt; each chunk using an embedding model&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Index&lt;/strong&gt; the vectors into a vector database (Pinecone or Weaviate)&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="recipe-1-csv--openai-embeddings--pinecone"&gt;Recipe 1: CSV → OpenAI Embeddings → Pinecone&lt;/h2&gt;
&lt;p&gt;Index a CSV of articles into Pinecone using the OpenAI Embeddings API.&lt;/p&gt;</description></item><item><title>RSS Cookbook</title><link>https://kmwtechnology.github.io/lucille/docs-pre-release/ingest-design/cookbooks/rss_cookbook/</link><pubDate>Tue, 10 Mar 2026 00:00:00 +0000</pubDate><guid>https://kmwtechnology.github.io/lucille/docs-pre-release/ingest-design/cookbooks/rss_cookbook/</guid><description>&lt;h3 id="rss-to-csv"&gt;RSS to CSV&lt;/h3&gt;
&lt;p&gt;Let&amp;rsquo;s say we wanted to read from an RSS feed into a CSV using Lucille. We can set this up in the following manner:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create a .conf file to configure Lucille&lt;/li&gt;
&lt;li&gt;Specify the RSS connector in the connectors section of the config:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-hocon" data-lang="hocon"&gt;connectors: [
 {
 name: &amp;#34;RSSConnector&amp;#34;
 pipeline: &amp;#34;rssPipeline&amp;#34;
 class: &amp;#34;com.kmwllc.lucille.connector.RSSConnector&amp;#34;
 rssURL: &amp;#34;https://www.cnbc.com/id/15837362/device/rss/rss.html&amp;#34;
 }
]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;There are a few additional configuration options that we won&amp;rsquo;t use here, but are useful:&lt;/p&gt;</description></item></channel></rss>