यह प्रोडक्शन गाइड बताता है कि नॉलेज ग्राफ का उपयोग करके वित्तीय धोखाधड़ी के पैटर्न को कैसे पता लगाया जाए
यह गाइड भुगतानों को मॉडल करने, किनारों की पूर्व गणना करने और पांच खरीद धोखाधड़ी पैटर्न का खुलासा करते हुए साइफर क्वेरी चलाने के लिए Neo4j ज्ञान ग्राफ का उपयोग करता है।
मुख्य जानकारी
- यह मार्गदर्शिका बताती है कि देय खातों के लिए एक Neo4j ज्ञान ग्राफ कैसे बनाया जाए, मॉडल विक्रेता, चालान, भुगतान, कर्मचारी, संगठन और बैंक खाते जुड़े हुए संस्थाओं के रूप में।
- अलग-थलग लेनदेन जांच संबंधीय धोखाधड़ी को याद करती है क्योंकि कई योजनाएं केवल भुगतान नेटवर्क के टोपोलॉजी के माध्यम से दिखाई देती हैं, जैसे कि एक ही बैंक खाते में धनराशि का रूटिंग करने वाले एकाधिक विक्रेता।
- पाइपलाइन पांच खरीद धोखाधड़ी पैटर्न का पता लगाने के लिए एक संपत्ति ग्राफ, पूर्व-कंप्यूटेड व्युत्पन्न किनारों और पैरामीटराइज्ड साइफर क्वेरीज़ का उपयोग करती हैः डुप्लीकेट इनवॉइस, परिपत्र चालान रिंग्स, पैसा खच्चर अंगूठियां, विक्रेता मिलीभगत और भुगतान विसंगतियों।
- ग्राफ डेटाबेस को नियम इंजन और ML मॉडल के पूरक के रूप में हाइलाइट किया गया है क्योंकि वे मल्टी-हॉप रिलेशनशिप क्वेरीज़ को कुशल बनाते हैं और संबंधपरक डेटा में छिपे हुए समन्वित धोखाधड़ी व्यवहार का खुलासा करते हैं।
- इंजेक्टेड फ्रॉड पैटर्न, ग्राउंड-ट्रुथ वैलिडेशन, डॉकर और नियो4ज के साथ एक पुनरुत्पादित सिंथेटिक डेटासेट का परीक्षण करने और पता लगाने की कार्यप्रवाह को प्रदर्शित करने के लिए एक व्यावहारिक संदर्भ कार्यान्वयन प्रदान करता है।
मेटा विवरण: भुगतान संस्थाओं को मॉडल करने के लिए एक Neo4j धोखाधड़ी का पता लगाने की पाइपलाइन का उपयोग करें, व्युत्पन्न किनारों को मूर्त रूप दें और साइफर प्रश्न चलाएं जो पांच खरीद धोखाधडी पैटर्न प्रकट करते हैं।
टैगः Neo4j, धोखाधड़ी का पता लगाना, साइफर, भुगतान ग्राफ, खरीद धोखाधडी
विशेष रुप से प्रदर्शित छवि: एक अंधेरे ग्राफ पृष्ठभूमि पर जुड़े भुगतान नोड्स और किनारों का अमूर्त मैत्रीपूर्ण चित्रण, कोई वास्तविक लोग नहीं हैं, कोई लोगो नहीं है, कोई पाठ नहीं है।
फाइनेंस टेक्नोलॉजी टीमों और डेटा इंजीनियरों के लिए खाता देय नियंत्रण का निर्माण, यह नियो 4 जे धोखाधड़ी पता लगाने की पाइपलाइन दिखाता है कि कैसे एक संपत्ति ग्राफ के रूप में विक्रेताओं, चालान, भुगतान, कर्मचारियों, संगठनों और बैंक खातों को मॉडल करना है, निगलने के दौरान व्युत्पन्न किनारों की पूर्व-गणना करें, और पांच खरीद धोखाधडी योजनाओं को उजागर करने के लिए पैरामीटर साइफर क्वेरी का उपयोग करें। संदर्भ कार्यान्वयन फ्रॉड डिटेक्शन नॉलेज ग्राफ़्स रिपोजिटरी में है।
क्यों अलग-अलग भुगतान चेक रिलेशनल जोखिम को याद करते हैं
एंटरप्राइज़ भुगतान वर्कफ़्लो में अधिकांश धोखाधड़ी विरोधी आर्किटेक्चर अलग-अलग लेनदेन का मूल्यांकन करते हैं। जब एक चालान आता है, तो एक स्वचालित नियम इंजन स्थिर सीमाओं की जांच करता हैः क्या डॉलर राशि सामान्य सीमा के भीतर आती है, चाहे विक्रेता अनुमोदित विक्रेताओं की सूची पर हो, और क्या प्रस्तुत करना IP पता परिचित लगता है। यदि व्यक्तिगत विशेषताएं प्रशंसनीय लगती हैं, तो भुगतान स्पष्ट होता है।
कमजोरी संरचनात्मक है। परिष्कृत योजनाएं जैसे कि मनी मल रिंग्स, सर्कुलर इनवॉइसिंग लूप और विक्रेता टकराव शायद ही कभी एकल-लेनदेन सीमाओं को ट्रिगर करते हैं। एक शेल कंपनी बिलिंग $4,800 डबल साइन-ऑफ थ्रेसहोल्ड के नीचे रहने के लिए अलग से ठीक लगती है। लेकिन जब 25 या उससे अधिक प्रतीत होते हुए स्वतंत्र विक्रेताओं ने उसी बैंक खाते में निकासी का मार्ग प्रशस्त किया, तो समन्वित पैटर्न दिखाई देता है।
चेतावनी एक अलग लेनदेन की विशेषताओं में नहीं है। यह भुगतान नेटवर्क के टोपोलॉजी में रहता है। ट्यूटोरियल उदाहरण में, Alpha Corp $5,200.00 को 2025-08-01 पर भेजता है, Beta LLC $4,800.00 को 2025 -08-02 और Gamma Inc $5,100.00 को [7 -08-03 पर भेजते हैं। सभी मात्राएं सामान्य $1,000- $15,000 रेंज के भीतर आती हैं, सभी विक्रेता मान्य होते हैं, और तिथियां अनुक्रमिक होती हैं। कोई भी रिकॉर्ड नियम तोड़ता नहीं है.
ACC-MULE-001 25 या अधिक विक्रेताओं से प्राप्त करता है, जो एक पैसा खच्चर अंगूठी है। अभिसरण लाल झंडा है। अंतर्निहित डेटा नहीं बदला है, लेकिन एक इकाई ग्राफ के अंदर लेनदेन का मूल्यांकन समन्वित फ़नल को प्रकट करता है।
एक संबंधपरक डेटाबेस में, इन संस्थाओं को जोड़ने के लिए विक्रेताओं, चालानों, भुगतानों और बैंक खातों की तालिकाओं पर पुनरावर्ती जुड़ाव की आवश्यकता होती है। जैसे-जैसे टेबल लाखों पंक्तियों में बढ़ते हैं, गहरे पथ पारगमन क्वेरी प्रदर्शन को कम करते हैं। ग्राफ डेटाबेस संबंधों को प्रथम श्रेणी, सूचकांक मुक्त आसन्नता पॉइंटर के रूप में संग्रहीत करते हैं, मल्टी-हॉप ट्रैवर्सल्स को निरंतर समय खोजों में बदल देते हैं। ज्ञान आलेख नियम इंजन या ML मॉडल की जगह नहीं लेता है। यह उस अंतर को भर देता है जो वे तक नहीं पहुंच सकते हैंः रिश्ते
| पैटर्न | इंजेक्टेड तराजू | अलग-अलग चेक क्या चूक जाते हैं |
|---|---|---|
| दोहरे चालान | 12 जोड़े | एक ही विक्रेता, लगभग समान मात्रा, समापन तिथियां और मामूली भिन्नताएं |
| गोलाकार छल्ले | 3 विक्रेताओं की 1 रिंग | प्रत्येक चालान अकेले वैध दिखता है |
| मनी मल रिंग | 1 खाते में 25 विक्रेता | कोई एकल भुगतान असामान्य नहीं है |
| विक्रेता मिलीभगत | 4 विक्रेता | स्वतंत्र दिखने वाले विक्रेता समान अंतर्निहित गुण साझा करते हैं |
| भुगतान विसंगतियों | 3 मामले | भूमिका आधारित जांच पास, लेकिन संदर्भ जाँच मौजूद नहीं है |
पूर्व शर्तें और वित्तीय ग्राफ स्कीमा
ट्यूटोरियल का पालन करने के लिए, पायथन 3.10 या उच्चतर, डॉकर और Docker Compose स्थापित करें, और पायथन और डेटाबेस अवधारणाओं से बुनियादी परिचित हों। संदर्भ डेटासेट वित्तीय प्रणालियों में आम तौर पर पाए जाने वाले छह इकाई प्रकारों को मॉडल करता है।
| इकाई | मुख्य गुण | भूमिका |
|---|---|---|
| विक्रेता | tax_id, नाम, देश, शहर | चालान जारी करता है |
| चालान | invoice_id, राशि, तिथि, श्रेणी | क्या बिल किया गया था रिकॉर्ड करता है |
| भुगतान | payment_id, राशि, तिथि | जो भुगतान किया गया था उसे रिकॉर्ड करता है |
| बैंक खाता | खाता_आईडी, रूटिंग नंबर, बैंक का नाम | रिकॉर्ड जहां पैसा चला गया |
| कर्मचारी | कर्मचारी_आईडी, नाम, विभाग | अभिलेख किसने अनुमोदित किया |
| संगठन | org_id, नाम, विभाग | अभिलेख संरचनात्मक पदानुक्रम |
आधार संबंध एक द्विपक्षीय भुगतान नेटवर्क बनाते हैं। एक कर्मचारी नोड APPROVED के माध्यम से एक पेमेंट नोड से जुड़ता है। वह भुगतान नोड LINKED_TO द्वारा इनवॉइस नोड, और Invoice नोड ISSUED_BY के जरिए वेंडर नोड तक जुड़ा होता है। पेमेंट नॉड भी PAID_TO के जरिये BankAccount नोड को जोड़ती है। इंजेक्शन भी विक्रेता नोड्स को संगठन नोडों से BELONGS_TO.
Neo4j धोखाधड़ी पाइपलाइन कदम से कदम का निर्माण
- पुनरुत्पादित सिंथेटिक डेटा उत्पन्न करें. वास्तविक दुनिया के वित्तीय डाटासेट को गोपनीयता और नियामक प्रतिबंधों के कारण एक्सेस करना मुश्किल है। सिंथेटिक्स डेटा ज्ञात धोखाधड़ी पैटर्न इंजेक्ट करने की अनुमति देता है और डिटेक्शन क्वेरी को व्यवस्थित रूप से सत्यापित किया जा सकता है। FraudDatasetGenerator वर्ग, dataset.generate से आयातित, पांच ज्ञात पैटर्न के साथ लगभग 500 संस्थाओं का निर्माण करता हैः 12 डुप्लिकेट चालान जोड़े, 3 विक्रेताओं की 1 परिपत्र चालान अंगूठी, एक खाते के लिए 25 विक्रेता की 1 मनी बैल रिंग, 4 आपूर्तिकर्ताओं का 1 विक्रय संयोग क्लस्टर, और 3 भुगतान विसंगतियों। इसे num_vendors=100, num_employees=30, num_organizations=5, and seed=42 के साथ कॉन्फ़िगर करें, फिर आउटपुट डेटासेट/आउटपुट पर सहेजें। बीज = 42 डेटासेट अस्थिर बनाता है। पूरी तरह से पुनः पेश किए जाने वाले वेंडर्स 100 220 हैं, जिनमें 200 इनवॉइस और 20 आधार चालान शामिल हैं, 331
- Neo4j प्रारंभ करें और कनेक्ट करें. एपीओसी प्रक्रियाओं को सक्षम करने के साथ स्थानीय नियो 4 जे 5.20 कंटेनर शुरू करने के लिए रन डॉकर कंपोज़ अप -डी चलाएं। ग्राफ कनेक्शन मॉड्यूल से फ्रॉडग्राफ़ ड्राइवर को आरंभ करें। डिफ़ॉल्ट कनेक्शन सेटिंग्स NEO4J_URI bolt://localhost: 7687, NEO3J_USER neo4j और NEO5J_PASSWORD पासवर्ड हैं। ड्राइवर max_connection_pool_size=50 और connection_acquisition_timeout = 30 का उपयोग करता है, और यह एक साधारण क्वेरी के साथ कनेक्शन की जांच करता है।
- विशिष्टता बाधाएँ बनाएँ. Vendor.tax_id, Invoice.invoice_id , BankAccount.account_id और Employee.employee_id के लिए बाधाएं बनाएं. संदर्भ कोड द्वारा उपयोग किए जाने वाले प्रतिबंध नाम हैं vendor_tax_d, invoice_d और account_d। ये बाधाएँ क्वेरी प्रदर्शन के लिए महत्वपूर्ण हैं. Neo4j में, अद्वितीय गुण बाधाओं स्वचालित रूप से अंतर्निहित बी-ट्री इंडेक्स बनाते हैं. उनके बिना, प्रत्येक MERGE ऑपरेशन डेटाबेस में सभी नोड्स पर एक अनुक्रमित पूर्ण स्कैन को मजबूर करता है.
- Load entities into the graph. FraudGraphLoader uses Cypher UNWIND to batch-insert entities in parameterized transactions, and the loader can call load_all(data). लोडिंग अनुक्रम विदेशी कुंजी निर्भरता का सम्मान करता हैः संगठन पहले लोड होते हैं, इसके बाद विक्रेताओं, बैंक खातों और कर्मचारियों के साथ चालान और भुगतान अंतिम रूप से लोड किए जाते हैं। प्रत्येक लोडिंग विधि एक ही पैटर्न का पालन करती है। MERGE O ((1) लुकअप के लिए बाधा का उपयोग करके एक नोड बनाता है या मेल खाता है, SET गुण संलग्न करता है, और MERGO रिश्तों को जोड़ता है। एक विक्रेता के लिए, लोडर ऑर्गनाइजेशन नोड को org_id द्वारा मैच कर सकता है और BELONGS_TO के माध्यम से वेंडर नोड से जुड़ सकता है।
- फास्ट क्वेरी के लिए व्युत्पन्न किनारों को भौतिक बनाना. ग्राफ डेटाबेस में एक केंद्रीय वास्तुकला निर्णय यह है कि क्या क्वेस्ट समय पर संबंधों की गणना करना है या उन्हें ग्रहण करने के दौरान भौतिक बनाना है। यह पता लगाना कि दो विक्रेता गंतव्य बैंक खाते को साझा करते हैं, इसके लिए वेंडर, चालान, भुगतान, बैंक खाता और रिवर्स पेमेंट, इनवॉइस, वेंडर पथ में चार-हॉप मार्ग से गुजरना पड़ता है। हर रीयल-टाइम धोखाधड़ी पूछताछ के दौरान उस रास्ते का मूल्यांकन करने से कंप्यूटेशनल ओवरहेड होता है। जब सिस्टम में डेटा प्रवेश करता है तो प्राप्त किए गए किनारे को भौतिक बनाने से बैच इंजेक्शन के दौरान थोड़ी सी लेटेंसी होती है, लेकिन यह मल्टी-होप ट्रैवर्सल्स को रनटाइम डिटेक्शन प्रश्नों के दौरान सीधे, सिंगल हॉप लुकअप में बदल देता है।
उन विक्रेताओं के बीच SHARED_ACCOUNT_WITH बनाएँ जो गंतव्य बैंक खाता साझा करते हैं. क्वेरी प्रत्येक विक्रेता को एक ही बैंक खाते में चालान और भुगतान के माध्यम से मेल खाती है, फिर WHERE id का उपयोग करती है < id(v2) इसलिए संबंध आंतरिक नोड आईडी के बीच एक निर्देशित किनारे के रूप में संग्रहीत किया जाता है और डुप्लिकेट रिवर्स किनारों से बचा जाता है। साथ ही उसी शहर और देश में विक्रेताओं के लिए SHARED_LOCATION को भौतिक करें, और जिन बैंक खातों के अलग-अलग account_id मूल्य हैं लेकिन रूटिंग नंबर के पहले 3 अंकों को साझा करने वाले विक्रेता के लिए Shared_Routing_PREFIX. ये व्युत्पन्न किनारे ढीले मिलीभगत नेटवर्क का पता लगाने में मदद करते हैं।
अंतर्ग्रहण के बाद, ग्राफ टोपोलॉजी का निरीक्षण graph.get_info से करें। आउटपुट कच्ची संस्थाओं और उत्पन्न व्युत्पन्न संबंधों की पुष्टि करता हैः चालान में 220 नोड्स हैं, भुगतान में 331 नोड्स है, विक्रेता में 100 नोड्स, बैंक खाते में 51 नोड्स हैं, कर्मचारी में 30 नोड्स होते हैं, संगठन में 5 नोड्स होता है, और SHARED_ACCOUNT_WITH में 412 संबंध होते हैं।
- पैरामीटराइज्ड सिफर डिटेक्शन क्वेरी चलाएँ. डिटेक्शंस लेयर बेस और व्युत्पन्न किनारों का उपयोग करता है। डुप्लिकेट चालान के लिए, इनवॉइस राशि, दिनांक और विक्रेता की तुलना करें। सर्कुलर रिंग्स के लिए 3 वेंडर के बंद लूप के माध्यम से ISSUED_BY और LINKED_TO किनारियों का पालन करें। मनी मल रिंग के लिए एक बैंक एकाउंट जैसे ACC-MULE-001 के साथ SHARED_ACCOUNT_WITH द्वारा लिंक किए गए विक्रेताओं की गिनती करें। विक्रेताको मिलीभगत के लिए 4 आपूर्तिकर्ताओं के साझा स्थान और साझा रूटिंग क्लस्टर का निरीक्षण करें। असामान्यताओं के लिए भुगतान अनुमोदन पथ पर कर्मचारी विभाग और संगठन संदर्भ को कनेक्ट करें। ग्राउंड ट्रूथ.जेसन के खिलाफ परिणाम मान्य करें।
उत्पादन वास्तुकला और सबक
पाइपलाइन इंजेक्शन को डिटेक्शन से अलग करके स्केल करती है। प्रतिबंध, बैच UNWIND और भौतिककृत किनारों से रनटाइम काम कम हो जाता है। व्युत्पन्न किनारे एक व्यापार-बंद होते हैंः बैच इन्जेक्शन के दौरान एक छोटी लेखन समय लागत बाद में तेजी से पता लगाने वाले प्रश्न खरीदती है। यह वास्तुकला तब उपयोगी होती है जब धोखाधड़ी संबंधपरक होती है, क्योंकि कई संस्थाएं व्यक्तिगत रूप से सामान्य दिखती हैं लेकिन उनके किनारे का विश्लेषण करने पर संदिग्ध बन जाती हैं। ग्राफ परत स्थिर सीमाओं या ML मॉडलों की जगह नहीं लेती; यह नेटवर्क संदर्भ जोड़ता है जिसे पृथक रिकॉर्ड उजागर नहीं कर सकते। धोखाधडी-खोज-ज्ञान-ग्राफ रिपॉजिटरी पूर्ण संदर्भ कार्यान्वयन प्रदान करता है।
आम गलतियाँ
- अद्वितीयता प्रतिबंधों को छोड़ना, जो MERGE के दौरान अनुक्रमित पूर्ण स्कैन का कारण बनता है।
- SHARED_ACCOUNT_WITH को भौतिक बनाने के बजाय क्वेरी समय के लिए चार-हॉप विक्रेता से बैंक खाता पथ छोड़ना।
- व्युत्पन्न संबंध की दोनों दिशाओं का निर्माण, जो किनारों को दोहराता है और संबंधों की गिनती में वृद्धि करता है.
- बिना बीज के FraudDatasetGenerator चलाना=42, डेटासेट और धोखाधड़ी पैटर्न को अप्राप्य बना देता है।
- एक संबंध परत के बजाय नियम इंजन या ML मॉडल के प्रतिस्थापन के रूप में ग्राफ जांच का इलाज करना।
- ground_truth.json को अनदेखा कर रहा है, इसलिए पता लगाने के परिणाम मान्य नहीं किए जा सकते हैं.
- संगठनों, विक्रेताओं, बैंक खातों या कर्मचारियों से पहले चालान और भुगतान लोड करना, जो संबंध निर्माण को तोड़ता है।

Comments (0)